Mam utworzoną niestandardową listę rozwijaną pola formularza do filtrowania według roku. Jedną z rzeczy, które chcę zrobić, jest zezwolenie użytkownikowi na filtrowanie przez wszystkie lata, co jest opcją domyślną. Dodaję to jako empty_value
. Jednak po wyrenderowaniu formularza domyślnie jest on ustawiony na pierwszy element, który nie jest pustą wartością. Jest tam pusta wartość, tuż nad nią na liście. Jak ustawić domyślną stronę, w moim przypadku "Wszystkie", gdy strona ładuje się początkowo? Kod znajduje się poniżej.Jak domyślnie wybrać opcję empty_value w niestandardowym typie pola formularza symfony?
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class YearType extends AbstractType
{
private $yearChoices;
public function __construct()
{
$thisYear = date('Y');
$startYear = '2012';
$this->yearChoices = range($thisYear, $startYear);
}
public function getDefaultOptions(array $options)
{
return array(
'empty_value' => 'All',
'choices' => $this->yearChoices,
);
}
public function getParent(array $options)
{
return 'choice';
}
public function getName()
{
return 'year';
}
}
Mam renderowania moją postać w gałązka z prostym {{ form_widget(filter_form) }}
Hmm ... to teraz działa i nie jestem pewien dlaczego. Chyba musiałem wyczyścić moją skrzynkę lub coś takiego? Opcje "Wszystkie" były wyświetlane u góry, ale wybrana była druga lub coś podobnego. Teraz domyślnie jest ustawiona na najwyższą opcję. – Squazic
@Squazic well, that's ok :) Może to buforowanie lub może nie załadowałeś ponownie całej strony ... – gremo
Mam to do pracy przez dodanie 'empty_value' i' empty_data', ale teraz użytkownik może pominąć wszystkie wymagane sprawdzanie i przesłać bez wybrania żadnej z faktycznie ważnych opcji. – phpguru