2012-03-20 2 views

ответ

4

Вы можете установить значения по умолчанию вручную:

$countries = array(
    'Spain', 
    'England', 
    'France' 
); 

$this->widgetSchema['countries'] = new sfWidgetFormChoice(array('choices' => $countries, 'multiple' => true, 'expanded' => true)); 

// Form will render with Spain and England pre-selected 
$this->widgetSchema['countries']->setDefault(array(0,1)); 

Если объект, к которому относится форма не является новой, по умолчанию будет предварительно выбран на основе сохраненных значений, так что вы, возможно, потребуется добавьте отметку $this->getObject()->isModified() вокруг последней строки.

+1

Этот конкретный метод не сработал, но обходной путь имеет смысл: $ this-> setDefault ('countries', array (0,1)). Стоит также отметить, что 0 и 1 соответствуют i ndices в массиве $ countries. Эти индексы также могут быть строками. – afilina

+0

На самом деле это действительно работает, я тестировал его перед отправкой кода, это зависит от того, как настроена схема вашего виджета. Если вы нашли этот ответ полезным, пожалуйста, примите. В любом случае, удачи. –

0

Если у вас есть форма, которая имеет виджет с выбором

$this->widgetSchema['example_select_export'] = new sfWidgetFormChoice(array(
             'multiple' => false, 
             'expanded' => false, 
             'choices' => array("csv" => "CSV", "excel" => "Excel", "csv_mac" => "CSV mac") 

           ); 
$choices = array("csv" => "CSV", "excel" => "Excel", "csv_mac" => "CSV mac"); 

Вы можете установить значение по умолчанию в действии, где вы создали форму вызов этого

$this->form->setDefault('example_select_export','csv') 

Или, если вы хотите просто закажите свой выбор в том порядке, в котором вы хотите их показать.

Смежные вопросы