我正在学习如何使用Zend框架并意识到动作助手是有用的东西。 我已经在我的机器上设置了Zend的默认安装,但是我不知道帮助文件需要去哪里,我需要把它放在bootstrap文件中以及我如何使用它。任何人都可以指出我正确的方向 - ZF用户指南不向我清楚。
由于 约翰
答案 0 :(得分:16)
关于将自定义操作助手放在何处的两个想法:
application/controllers/helpers
这些想法并不是唯一的。通常可以在多个项目中工作的功能应该被拉入一个单独的库中。但是对于特定于应用程序的功能,有一个论点是它可能位于application
文件夹中的某个位置。
@Jurian已经描述了“独立库”方法。对于特定于应用程序的帮助程序,您可以执行以下操作:
对于名为myHelper的帮助程序,请在文件Application_Controller_Helper_MyHelper
中创建一个类application/controllers/helpers/MyHelper.php
。在Bootstrap
中,您有类似的内容:
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Application',
'basePath' => APPLICATION_PATH,
));
Zend_Controller_Action_HelperBroker::addPath(
APPLICATION_PATH . '/controllers/helpers',
'Application_Controller_Helper_');
return $autoloader;
}
然后可以使用以下命令在控制器中调用助手:
$this->_helper->myHelper;
如您所见,这假设您正在使用appNamespace'Application'。如果没有,您可以(必须!)修改您的班级名称以适应您的情况。
干杯!
答案 1 :(得分:6)
您可以将动作助手放在自己的库中。除了库/ Zend所有Zend的东西,你可以创建一个库/ MyLibrary文件夹(MyLibrary是任意选择的)并将动作助手放在那里。
一个好的地方是你需要创建的库/ MyLibrary / Controller / Action / Helper文件夹,并将动作助手放在那里(即Navigation.php)。在此文件中,创建类MyLibrary_Controller_Action_Helper_Navigation
。
下一步是在bootstrap期间将动作助手添加到Zend Framework的HelperBroker。因此,在Bootstrap.php文件中创建一个新方法并添加此函数:
protected function _initActionHelpers ()
{
Zend_Controller_Action_HelperBroker::addHelper(
new MyLibrary_Controller_Action_Helper_Navigation()
);
}
最后一点是您需要通过将此规则添加到application.ini来配置此库的使用:
autoLoaderNameSpaces[] = "MyLibrary_"
答案 2 :(得分:1)
您可以通过application.ini
文件执行此操作
resources.view[] =
resources.view.helperPath.Default_View_Helper_ = APPLICATION_PATH "/views/helpers/"
然后,在views/helpers
路径中,您可以创建一个类似Time.php
的文件。该文件包含以下代码:
<?php
class Default_View_Helper_Time extends Zend_View_Helper_Abstract
{
public function time()
{
$date = new Zend_Date();
return $date->get(Zend_Date::TIME_MEDIUM);
}
}
?>
要在视图脚本中使用它,您可以使用
<?=$this->time()?>
使用新的View_Helper
答案 3 :(得分:0)
您可以避免在Bootstrap.php
中注册动作帮助程序命名空间和路径,方法是在application.ini
中声明它们,如下所示:
resources.frontController.actionHelperPaths.My_Controller_Action_Helper = APPLICATION_PATH "/controllers/helpers"
只需将My_Controller_Action_Helper
替换为所需的命名空间,并相应地修改帮助程序目录路径。
可以用相同的方式初始化助手:
$this->_helper->myHelper;
正如文档中所提到的,通常首选注册帮助程序的前缀或路径,因为在上面的代码片段中调用帮助程序之前不会对其进行初始化。
当然,实例化并将助手传递给代理有点儿 时间和资源密集,因此存在两种自动化方法 稍微:addPrefix()和addPath()。
http://framework.zend.com/manual/1.12/en/zend.loader.pluginloader.html
将配置条目添加到application.ini
遵循相同的建议模式。