Как я могу использовать атрибут onchange с symfony 1.4 - PullRequest
0 голосов
/ 29 января 2012

Я использую Symfony 1.4 с Propel Orm.У меня есть 3 таблицы, такие как страны, штаты и округа.Я хочу использовать атрибут onchange, чтобы избежать перегрузки и передать несвязанные записи.Как я могу использовать атрибут onchange в классах форм.

1 Ответ

1 голос
/ 29 января 2012

Зачем использовать его в классе формы, а не в представлении (и использовать его с ajax) при рендеринге поля?Это при условии, что вы не делаете echo $form, и вы повторяете каждое поле (метка, ошибка, поле).Если вы делаете echo $form, вам может потребоваться записать его в классе формы (хотя это относится к представлению, а не к классу, но это еще одна проблема).Просто используйте параметр массива атрибутов, когда вы определяете виджет.Что-то вроде:

$this->widgetSchema['state'] = new sfWidgetFormDoctrineChoice(array(blabla), array('onchange' => 'someJsFunction'));

Если вы хотите также ограничить выбор, то в классах формы (например, чтобы заполнить выбор только штатами США, когда США были выбраны в поле выбора страны),отправьте контекст в форму в качестве опции:

в ваших действиях:

$this->form = new whateverForm(array(), array('context' => $this->getContext()));

в вашей форме сделайте что-то вроде:

$context = $this->getOption('context');

if (!$context instanceOf sfContext) throw new sfException('whateverForm needs the context.. bla bla');

$taintedValues = $context->getRequest($this->getName()); 
$country = $taintedValues['country'];` 

Это даст вам текущую подчиненную страну для отображения штатов только для этой страны.

То же самое с округами.

...