#zend-framework #bootstrapping #view-helpers
#zend-framework #начальная загрузка #просмотр-помощники
Вопрос:
В Zend Framework, как я мог бы использовать метод setHelperPath в моем bootstrap.php файл, чтобы сделать «My_View_Helper_Test» доступным для фреймворка (допустим, вспомогательный абсолютный путь — это константа ‘MY_PATH’)?
Мой index.php
//identify the location of th application dir in respect to
//the botstrap file's location, and configure PHP's include_path to
//include the library directory's location
define('APPLICATION_PATH',realpath(dirname(__FILE__).'/../application'));
set_include_path(APPLICATION_PATH.'/../library'.PATH_SEPARATOR.get_include_path());
//give the zend framework the ability to load classes on demand,
//as you request them,rather than having to deal with require() statements.
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
//retrieve the BOOTSTRAP file
try
{
require'../application/bootstrap.php';
}
catch(Exception $exception)
{
printf('Could not locate bootstrap.php');
exit(1);
}
//start using the front controller in order to route all requests
Zend_Controller_Front::getInstance()->dispatch();
Мой bootstrap.php
//configure the site environment status
defined('APPLICATION_ENVIRONMENT')or define('APPLICATION_ENVIRONMENT','development');
//invoke the front controller
$frontController=Zend_Controller_Front::getInstance();
//identify the location of the controller directory
$frontController->setControllerDirectory(APPLICATION_PATH.'/controllers');
//create the env parameter so you can later access the environment
//status within the application
$frontController->setParam('env',APPLICATION_ENVIRONMENT);
//clean up all allocated script resources
unset($frontController);
Спасибо
Luca
Ответ №1:
Прежде всего, у вас должен быть класс начальной загрузки, подобный этому: http://framework.zend.com/manual/en/zend.application.examples.html
Затем в вашем классе bootstrap вы должны добавить метод для инициализации представления и добавить вспомогательный путь представления:
/**
* Initializes the view
*
* @return Zend_View A view object
*/
protected function _initView()
{
// Initialize view
$view = new Zend_View();
// Add view helper path
$view->addHelperPath(
MY_PATH,
'My_View_Helper'
);
// Add the view to the ViewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer'
);
$viewRenderer->setView($view);
// Return it, so that it can be stored by the bootstrap
return $view;
}
Комментарии:
1. спасибо, что, если я захочу использовать старый процедурный способ? (не хочу использовать класс начальной загрузки ни zend_application)
2. Я не тестировал это, но я полагаю, что вы могли бы использовать тот же код внутри
_initView()
метода выше, за исключениемreturn $view
строки, конечно.