Yıllara göre filtrelemek için özel form alanı açılan listesi oluşturdum. Yapmak istediğim şeylerden biri, kullanıcının varsayılan seçenek olan tüm yıllara göre filtrelemesine izin vermektir. Bunu bir empty_value
olarak ekliyorum. Ancak, formu oluşturduğumda, boş değer olmayan ilk öğede varsayılan olur. Boş değer orada, listede sadece üstünde. Sayfa varsayılan olarak, sayfa ilk olarak yüklendiğinde 'Tümü' olarak nasıl yapılır? Kod aşağıda.Özel bir symfony form alanı türünde boş_değer seçimine varsayılan değer nasıl verilir?
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';
}
}
Ben null
için empty_data
seçeneği ekleyerek basit {{ form_widget(filter_form) }}
Hmm ... şimdi çalışıyor ve neden emin değilim. Önbelleğimi veya bir şeyimi temizlemek zorunda mıyım? 'Tümü' seçenekleri üstte gösteriliyordu, ancak seçileni 2 ya da bir şeydi. Şimdi üst seçeneğe uygun şekilde varsayılan. – Squazic
@Squazic peki, sorun değil :) Belki de önbellekleniyor veya sayfanın tamamını yeniden yüklemediniz ... – gremo
Bunu 'empty_value' ve 'empty_data' ekleyerek işe aldım ama şimdi kullanıcı gerekli tüm doğrulamaları atlayabilir ve gerçek geçerli seçeneklerden herhangi birini seçmeden gönderin. – phpguru