Динамические элементы формы для displayField в Zend - PullRequest
0 голосов
/ 17 мая 2011

Я работаю над приложением, в котором пользователи могут быть размещены в группе. Группы могут быть добавлены / отредактированы в базе данных, поэтому они являются динамическими. У меня есть следующая форма:

public function init()
{
    $this->setMethod('post')
         ->setAttrib('id', 'userGroup');

    //get the stuff out of the db
    $group = new Application_Model_GroupMapper();
    $disciplines = $group->fetchAll(array(
        'type' => 'discipline',
        'orderby' => 'g.name',
        'sort' => 'ASC'
    ));

    $disciplineFields = array();
    foreach($disciplines as $row):
        $el = $row->name;
        $this->addElement('checkbox', $el, array(
            'required'      => false,
            'label'         => $el,
            'class'         => 'inputCheckbox'
        ));
        $this->$el->setCheckedValue('true');
        $this->$el->setUnCheckedValue('false');

        array_push($disciplineFields,$el);
    endforeach;

    //discipline information
    $this->addDisplayGroup(
        $disciplineFields,
        'disciplineInformation',
        array('legend' => 'Discipline')
    );

НО Я получаю ошибку:

Не указаны допустимые элементы для группы отображения

Ну, это странно, потому что, когда я считаю свой массив $ schollineFields , он имеет 4 элемента, и поля выводятся при удалении строки displayGroup. Также, когда я изменяю строку displayGroup на

//discipline information
$this->addDisplayGroup(
    array('Schipper'), //this is one of the records in the database
    'disciplineInformation',
    array('legend' => 'Discipline')
);

Поле 'Schipper' отображается в fieldset / displayGroup.

Почему это не работает? Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2013

У меня была похожая проблема в одной из моих форм.Причина в том, что я добавил в форму закрытый атрибут с именем _ (имя displayGroup).Представьте, что в вашем случае у вас есть имя частной собственности с именем _disciplineInformation.Каким-то образом это создало проблему, и я получил тот же результат, что и вы.

Я бы посоветовал вам изменить имя в группе отображения на что-то вроде дисциплинарное_информационное_тестирование и посмотреть, проходит ли оно, как следует из названия,классический тест CTRL-R.

Надеюсь, это сработает;если нет, добавьте полный дамп исключений в вопрос.

0 голосов
/ 18 мая 2011

Вы должны установить точку останова на Zend_Form :: addDisplayGroup и отладить ее.Я не вижу ничего плохого в вашем коде, возможно, ваши данные неправильно получены.

Если вы делаете Zend_Debug::dump на disciplines, что отображается?

И вы должны пройти свою дисциплинучерез метод setDisciplines вашей формы вместо жесткого кода в init.

...