Я думаю, что это так просто.
ViewScript нельзя использовать в методе init () для вашей формы по одной простой причине. Если вы посмотрите на пример (и, вероятно, на ваш display.phtml), есть эхо-операторы, подобные этому $this->form->firstname;
. На данный момент в init () элементы формы еще не загружены!
Поэтому автор правильно показывает этот код
$form->setDecorators(array(
array('ViewScript', array('script' => 'demogForm.phtml'))
));
Обратите внимание, что он использует $form
в качестве объекта. Либо в контроллере, либо в скрипте вида вы загружаете форму как объект и затем добавляете ViewScript. Так что в одном из ваших контроллеров вы бы сделали что-то вроде этого
$form = new My_Form();
$scriptPath = '/path/to/script/display.pthml'
// or without a path if you have a script folder loaded
$form->setDecorators(array(
array('ViewScript', array('script' => $scriptPath))
));
Это должно сработать.
Обновление Глядя на наименование вашего pthml, я предполагаю (и надеюсь), что это специальный шаблон для вашей формы, а не всего файла макета. Если вы используете весь файл макета, то, конечно, если будет отображать всю страницу!