[英]Symfony 5.4, customize form to display year only
添加了年份的當前 buildForm
->add('year', DateType::class, array(
'label' => 'Select Year',
'widget' => 'choice',
'years' => range(Date('Y'), 2000)
自定義月份和日期屬性的 twig 文件,(這曾經有效)
{{ form_widget(form.year['day'], {'attr':{'style':'display:none'}}) }}
{{ form_widget(form.year['month'], {'attr':{'style':'display:none'}}) }}
我試過更改 twig 文件,將 class 添加到表單生成器,到目前為止似乎沒有任何效果。
如果你的字段只是一個integer,你可以直接使用ChoiceType
。 將'choices'
選項設置為您的年份范圍,並配置“選擇'choice_label'
選項以使用該值。
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
class YearType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('year', ChoiceType::class, [
'label' => 'Select Year',
'choices' => range(Date('Y'), 2000),
'choice_label' => function ($value) {
return $value;
},
])
;
}
}
上面的YearType
呈現如下:
<form name="year" method="post"><div id="year"><div><label for="year_year" class="required">Select Year</label><select id="year_year" name="year[year]"><option value="2023">2023</option><option value="2022">2022</option><option value="2021">2021</option><option value="2020">2020</option><option value="2019">2019</option><option value="2018">2018</option><option value="2017">2017</option><option value="2016">2016</option><option value="2015">2015</option><option value="2014">2014</option><option value="2013">2013</option><option value="2012">2012</option><option value="2011">2011</option><option value="2010">2010</option><option value="2009">2009</option><option value="2008">2008</option><option value="2007">2007</option><option value="2006">2006</option><option value="2005">2005</option><option value="2004">2004</option><option value="2003">2003</option><option value="2002">2002</option><option value="2001">2001</option><option value="2000">2000</option></select></div><input type="hidden" id="year__token" name="year[_token]" value="9f14.o4haGhHOQ5-4CrGAkoeXWo94meRfttZPMpyzdrCmQdw.ydIdciiXJsngeuvs98b6Frkwrrdo05sOW-TwDuXVKu2O3jUjcpw0xsJsiQ"></div></form>
如果你需要它是一個DateTime
構建一個充滿DateTime
的選擇數組
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
class YearType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$range = range(Date('Y'), 2000);
$choices = [];
foreach ($range as $Y) {
$choices[$Y] = new \DateTime("Jan 1st $Y");
}
$builder
->add('year', ChoiceType::class, [
'label' => 'Select Year',
'choices' => $choices,
'choice_value' => function (?\DateTime $year) {
return $year ? $year->format('Y') : '';
},
])
;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.