Zend: Декоратор ViewScript и нотация массива - PullRequest
2 голосов
/ 23 августа 2011

У меня есть матрица флажков, которые я выкладываю в таблицу. Мне нужно перетащить эту матрицу в несколько форм, а иногда несколько раз в одной форме, поэтому я настроил ее как подчиненную форму.

После долгих исследований и размышлений я решил, что лучший способ украсить подчиненную форму - это использовать декоратор viewScript. Код для добавления подчиненной формы в форму выглядит примерно так:

$this->addSubForm(new Test_Form_Connection_Config_Base(), 'user');
$this->user->setDecorators(array(
    array('viewScript', array('viewScript' => '_forms/userConfig.phtml')),
          'Description',
          'FieldSet',
        ));

По большей части это работает нормально, но у меня есть одна проблема - я не могу заставить работать нотацию массива. Очевидно, это становится проблемой, когда я включаю матрицу более одного раза в определенную форму.

Я пытался использовать setIsArray (true), однако это не имело никакого эффекта. Кажется, мне нужно запустить декоратор FormElements, чтобы получить нотацию массива, но тогда я получу дубликат набора полей на странице (один раз визуализируется с помощью FormElements, а другой - с помощью viewScript).

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

Спасибо ...!

1 Ответ

2 голосов
/ 23 августа 2011

Перед использованием декоратора ViewScript вы всегда должны использовать декоратор PrepareElements для нормализации имен.

См. http://framework.zend.com/manual/en/zend.form.standardDecorators.html#zend.form.standardDecorators.prepareElements

...