Почему Zend_Dojo не включает / не импортирует должным образом? - PullRequest
1 голос
/ 31 августа 2009

У меня странная проблема: в прошлом я использовал Zend Dojo и Zend Form, чтобы добиться большого эффекта, но в моем последнем проекте Zend_Dojo отказывается включать, если его не заставляют просматривать, и даже тогда не будет импортируйте соответствующие библиотеки для используемых мной диджитов. Вот соответствующий код:

Bootstrap.php:

protected function _initViewHelpers() {
    $this->bootstrap('layout');

    $layout = $this->getResource('layout');
    $view = $layout->getView();

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

    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();

    $viewRenderer->setView($view);

    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

    $view->doctype('XHTML1_TRANSITIONAL');

    $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
    $view->headLink()->appendStylesheet('base.css');
}

IndexController.php (отрывок из других не связанных материалов)

public function renderAction() {
$this->_helper->layout->setLayout('render');
//SNIP
if ($this->getRequest()->getParam("medialeadsource"))
    {
        $source = $this->getRequest()->getParam("medialeadsource");
        $mls = $this->sourceService->getSourceByURI($source);
        $this->view->source = $mls;
        $form = new App_forms_Sweepstakes($mls->__get('id'), $mls->__get('layout'));

        $this->view->form = $form;          
        switch($mls->__get('template')) {
            case '1':
                $this->_helper->viewRenderer('template-1');
                break;
            case '2':
                $this->_helper->viewRenderer('template-2');
                break;
            case '3':
                $this->_helper->viewRenderer('template-3');
                break;
            default:
                $this->_helper->viewRenderer('template-1');
                break;
        }
        $this->view->test = $this->sourceService->isURISlideshow($source);
        $this->view->subheadline = $mls->__get('subheadline');
        $this->view->body = $mls->__get('body');
        Zend_Dojo::enableView($this->view);
        Zend_Dojo::enableForm($form);
        Zend_Dojo_View_Helper_Dojo::setUseDeclarative(); 
//SNIP
}

И из template-1.phtml (единственное представление, которое я до сих пор настраивал для Dojo. Также обратите внимание, что для этих конкретных представлений сам макет лишен какого-либо собственного содержимого и поэтому не влияет на вопросы). Я только включаю соответствующую часть, опять же:

<?php   
      $this->dojo()->setDjConfigOption('usePlainJson',true)
         ->addStylesheetModule('dijit.themes.tundra');
    echo $this->dojo();

?>  
</head>
<body class="tundra">

Сгенерированный код выглядит следующим образом:

<title>Test View Title</title>
</head>
<body class="tundra">

Так что, очевидно, ничего не происходит .. Если я добавлю -> enable () для цепочки dojo в представлении, вот что я получаю:

<script type="text/javascript" src="primaryFunctions1.js"></script>
<style type="text/css">
<!--
@import "http://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dijit/themes/tundra/tundra.css";
-->
 </style>
 <script type="text/javascript">
//<![CDATA[
var djConfig = {"usePlainJson":true,"parseOnLoad":true};
//]]>
</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojo/dojo.xd.js"></script>

<title></title>
</head>
<body class="tundra">

Так что до сих пор нет диджитного импорта. Я в растерянности!

1 Ответ

1 голос
/ 05 января 2011

Я думаю, что ваша проблема связана с тем, что import / require создаются после $ form-> render (). Обычно вы можете обойти эту проблему с помощью скриптов макета. Однако в настоящее время у меня иногда есть borderContainers и другие додзё, даже в макете, которые вынуждают меня поместить его последним в документ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...