Zend_Dojo_Form_Element создает простые элементы («действует» как Zend_Form_Element) - PullRequest
1 голос
/ 30 июля 2011

Я пытаюсь создать кнопку диджита в ZF. Я пытался использовать обычное додзё, и оно работает, но при использовании Zend_Dojo создает простую кнопку, другими словами, Zend_Dojo_Form_Elements действует как Zend_Form_Element.

IndexController без Zend_Dojo (при этом кнопка отображается правильно):

$newEventButton = new Zend_Form_Element_Button('newEvent', array('dijitType'=>'dijit.form.Button');
$newEventButton->setLabel('New Event'); 
$this->view->newEventButton = $newEventButton;

IndexController с Zend_Dojo (таким образом он создает простую кнопку, как видно ниже):

$newEventButton = new Zend_Dojo_Form_Element_Button('newEvent');
$newEventButton->setLabel('New Event'); 
$this->view->newEventButton = $newEventButton;

И результат:

enter code here
<button type="button" id="newEvent" name="newEvent">New event</button>

Что я делаю не так, почему Zend_Dojo_Form_Element действует как Zend_Form_Element? Спасибо.

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Если вы просто хотите создать кнопку, используйте непосредственно помощник вида (Zend_Dojo_View_Helper_Button) вместо использования элемента формы (Zend_Dojo_Form_Element_Button). Прежде чем делать это, убедитесь, что вы включили помощники вида dojo в ваш загрузчик:

$view->addHelperPath(
    'Zend/Dojo/View/Helper/',
    'Zend_Dojo_View_Helper'
);

И убедитесь, что вы включили Dojo view helper в вашем представлении или макете:

$view->dojo()->enable();

Теперь, чтобы напрямую использовать помощник вида (Zend_Dojo_View_Helper_Button) для рендеринга вашей кнопки (в обход Zend_Dojo_Form_Element_Button, которую следует использовать только при построении полной формы). На ваш взгляд:

echo $this->button('newEvent', null, array('label' => 'New Event', 'onclick' => 'someAction()'));

Или, если вы хотите определить кнопку в контроллере:

$this->view->newEventButton = $this->view->button('newEvent', null, array('label' => 'New Event', 'onclick' => 'someAction()'));

А затем отобразить его в виде:

echo $this->newEventButton;

Надеюсь, это поможет!

1 голос
/ 30 июля 2011

Вы установили переменную конфигурации parseOnLoad при загрузке dojo?

<script> djConfig = {parseOnLoad: true}; </script>
<script src="path to dojo"></script>
...