Zend_Dojo_Form не отображается в макете - PullRequest
0 голосов
/ 20 мая 2010

У меня быстрый вопрос о добавлении Zend_Dojo_Form в Zend_layouts.

У меня есть Zend_Dojo_Form, который я хочу отобразить в макете, который используется для конкретного контроллера. Я могу добавить форму в макет без каких-либо проблем, однако элементы dojo не будут отображаться, как если бы я добавил форму в стандартное представление.

Есть ли какая-то причина, почему это так? Нужно ли что-то делать с макетом, чтобы он включал компоненты для этой встроенной формы в макете. Любые другие формы с поддержкой dojo, которые добавляются в представление с использованием этого макета, работают нормально.

Моя форма создана обычным способом:

class QuickAddJobForm extends Zend_Dojo_Form{


public function init(){

    $this->setName('quickaddjobfrm')
        ->setMethod('post')
        ->setAction('/addjob/start/);


    /*We now create the elements*/
    $jobTitle = new Zend_Dojo_Form_Element_TextBox('jobtitle',
        array(
            'trim' => true              
        )
    );
    $jobTitle->setAttrib('style', 'width:200px;')
        ->addFilter('StripTags')
        ->removeDecorator('DtDdWrapper')
        ->removeDecorator('HtmlTag')
        ->removeDecorator('Label');

      ....
  $this->addElements(array($jobTitle, ....));

В контроллере я объявляю расположение и форму в функции init:

 public function init(){
   $this->_helper->layout->setLayout('add-layout');
   $form = new QuickAddJobForm();
   $form->setDecorators(array(array('ViewScript', array('viewScript' => 'quickAddJobFormDecorator.phtml'))));

 $this->_helper->layout()->quickaddjob = $form;

В моем макете Где я хочу форму, у меня есть:

  echo $this->layout()->quickaddjob;

Почему при добавлении этой формы в макет не удается отобразить / добавить элементы Dojo? Все, что в данный момент отображается, - это текстовые поля, а не некоторые другие компоненты, такие как ComboBoxes / FilteringSelects и т. Д ...

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 24 июля 2010

Это то, что у меня есть в layout.phtml

<head>

    <style type="text/css" media="screen">
        @import url("<?= Zend_Controller_Front::getInstance()->getBaseUrl() ?>/includes/js/dojo/dijit/themes/tundra/tundra.css");

<?php
$this->dojo()->enable();
    if ($this->dojo()->isEnabled()) {
        $this->dojo()->setLocalPath($this->baseUrl() .  '/includes/js/dojo/dojo/dojo.js');
        echo $this->dojo();
    }
?>
</head>
<body class="tundra">

В моей начальной загрузке я использую

    protected function _initDojo()
{
    $this->bootstrap('frontController');
    $this->bootstrap('view');
    $view = $this->getResource('view');

    $appConfig = Zend_Controller_Front::getInstance()->getParam('appconfig');
    Zend_Dojo::enableView($view);
    Zend_Dojo_View_Helper_Dojo::setUseDeclarative();
    $view->dojo()->setLocalPath(Zend_Controller_Front::getInstance()->getBaseUrl() . '/includes/js/dojo/dojo/dojo.js')
    ->addLayer(Zend_Controller_Front::getInstance()->getBaseUrl() . '/includes/js/dojo/dojo/nirvanaDojo.js')
    ->requireModule('dijit.TitlePane')
    ->requireModule('dijit.InlineEditBox')
    ->requireModule('dijit.ProgressBar')
    ->requireModule('dijit.form.DateTextBox')
    ->addStyleSheetModule('dijit.themes.tundra');
}

Теперь я могу вызывать $ this-> form в любое время в моих скриптах вида, и Dojo правильно отображает

Проблема в том, что я не могу Dojo отрисовать форму в модальном окне

0 голосов
/ 19 ноября 2011

Если вы используете Zend_Dojo_Forms в макете, убедитесь, что вы сделали их перед вызовом

echo $ this-> dojo ();

Вы можете сделать это с помощью чего-то подобного:

//in HTML-Head:
$content = $form->render();
echo $this->dojo();

//later...
echo $content;
0 голосов
/ 20 мая 2010

Я не уверен на 100%, но я думаю, что вы должны добавить Dojo в свое приложение. Попробуйте

 $this->dojo()->enable(); 
 echo $this->dojo(); 

в вашем Layout.phtml

...