سؤال

لقد بدأت وضع البرامج النصية لعنصر النموذج الخاص بي ضمن "/ التطبيق / المشاهدات / البرامج النصية / النموذج /" وتمكن من الرجوع إليها عن طريق "النموذج / scriptname.phtml"، ولكن الآن أحتاج إلى جعل وحدة تحكم "نموذج" وأدرك كان هذا حل قصير النظر. الأمثلة التي رأيتها تستخدم شيئا مثل "/ مسار / إلى / عرض / مشاهدتك / البرامج النصية /" التي لا تساعدني في ما هو مكان منطقي / موصى به لوضعها.

شكرا!

هل كانت مفيدة؟

المحلول

يمكنني استخدام هيكل الملفات غير القياسية واستخدام الوحدات النمطية لتطبيقاتي:

/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. على افتراض أنك لم تقم بإضافة أي مسارات نصية أخرى، يمكنك إضافة مسارات البرنامج النصي الخاصة بك في طريقة التحكم في تحكم الإجراء () هذه الطريقة:

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

  }

}

سيبحث النظام في البرامج النصية المشاهدات لوحدة التحكم الخاصة بك لعرض الخاص بي أولا، ثم إذا لم تجدها، فسوف ننظر في / التطبيق / المشاهدات / البرامج النصية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top