簡體   English   中英

Symfony 5.4、自定義表格只顯示年份

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM