Ho creato un elenco a discesa campo modulo personalizzato per il filtraggio per anno. Una delle cose che voglio fare è consentire all'utente di filtrare per tutti gli anni, che è l'opzione predefinita. Sto aggiungendo questo come empty_value
. Tuttavia, quando eseguo il rendering del modulo, esso si imposta automaticamente sul primo elemento che non è il valore vuoto. Il valore vuoto è lì, appena sopra l'elenco. Come faccio a rendere la pagina predefinita, nel mio caso 'Tutti' quando la pagina inizialmente viene caricata? Il codice è sottoCome impostazione predefinita per la scelta empty_value in un tipo di campo modulo symfony personalizzato?
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';
}
}
sto rendendo la mia forma in ramoscello con un semplice {{ form_widget(filter_form) }}
Hmm ... ora funziona e io non so perché. Penso di aver dovuto svuotare il mio cache o qualcosa del genere? Le opzioni 'All' erano mostrate in alto, ma quella selezionata era 2nd o qualcosa. Ora è correttamente predefinito per l'opzione superiore. – Squazic
@Squazic bene, va bene :) Forse è il caching o forse non hai ricaricato l'intera pagina ... – gremo
Ho funzionato aggiungendo 'empty_value' e' empty_data' ma ora l'utente può saltare tutte le convalide richieste e inviare senza selezionare alcuna delle opzioni effettivamente valide. – phpguru