Рекомендуемый путь для скриптов вида элемента Zend - PullRequest
0 голосов
/ 04 февраля 2010

Я начал помещать свои скрипты вида элемента формы в «/ application / views / scripts / form /» и мог ссылаться на них через «form / scriptname.phtml», но теперь мне нужно сделать контроллер «формы» и я понимаю, что это было близорукое решение. Примеры, которые я видел, используют что-то вроде '/ path / to / your / view / scripts /', что не помогает мне найти логичное / рекомендуемое место для их размещения.

Спасибо!

1 Ответ

2 голосов
/ 05 февраля 2010

Я использую нестандартную файловую структуру и использую модули для своих приложений:

/application
  /default
    /controllers
      /IndexController
      /ErrorController
    /views
      /scripts
        /index
          /index.phtml
        /error
          /error.phtml
/configs
  /config.ini
/library
  /Zend
/views
  /layouts
    /default.phtml
  /scripts
    /form
      /_text.phtml

Чтобы сделать это таким образом, вы должны добавить каталог модуля в вашей конфигурации для Zend_Application:

[production]

phpsettings.display_startup_errors = 0
phpsettings.display_errors = 0
resources.layout.layout = "default"
resources.layout.layoutpath = "c:\xampp\files\views\layouts"
resources.frontcontroller.moduledirectory = "c:\xampp\files\application"

[development : production]

phpsettings.display_startup_errors = 1
phpsettings.display_errors = 1

Просмотр путей скриптов загружается в порядке LIFO. Предполагая, что вы не добавили никаких других путей к сценариям, вы можете добавить свои пути к сценариям в методе действия контроллера init () следующим образом:

<?php

class IndexController extends Zend_Controller_Action {

  public function init() {

    $appScriptPath = 'c:\xampp\files\views\scripts';
    $modScriptPath = array_shift($this->view->getScriptPaths());

    $this->view->setScriptPath(NULL);

    $this->view->addScriptPath($appScriptPath);
    $this->view->addScriptPath($modScriptPath);

  }

  public function indexAction() {

    $form = new Zend_Form();

    $form->addElement(new Zend_Form_Element_Text('text'));
    $form->text->setLabel('Text');
    $options = array('viewScript' => 'form/_text.phtml');
    $decorators = array(array('ViewScript', $options));
    $form->text->setDecorators($decorators);

    $this->view->form = $form;

  }

}

Система сначала будет искать в скриптах представлений контроллера ваш viewScript, а затем, если не найдет его, она будет выглядеть в /application/views/scripts.

.
...