Recommended Path For Zend Form Element View Scripts

后端 未结 1 1939
你的背包
你的背包 2021-01-28 07:48

I had started putting my form element view scripts under \'/application/views/scripts/form/\' and was able to reference them by \'form/scriptname.phtml\', but now I need to make

相关标签:
1条回答
  • 2021-01-28 08:20

    I use non-standard file structure and use modules for my applications:

    /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
    

    To do it this way, you have to add the module directory in your config for 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
    

    View script paths are loaded in LIFO order. Assuming you have not added any other script paths, you can add your script paths in the action controller init() method this way:

    <?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;
    
      }
    
    }
    

    The system will look in the controller views scripts for your viewScript first, and then if it does not find it, it will look in /application/views/scripts.

    0 讨论(0)
提交回复
热议问题