Zend Action助手

use*_*988 9 zend-framework

我正在学习如何使用Zend框架并意识到动作助手是有用的东西.我在我的机器上设置了Zend的默认安装,但是我不知道帮助文件需要去哪里,我需要把它放在bootstrap文件中以及我如何使用它.任何人都可以指出我正确的方向 - ZF用户指南不向我清楚.

谢谢约翰

Dav*_*aub 16

关于在哪里放置自定义操作助手的两个想法:

  1. 在一个单独的自定义库中
  2. 在文件夹中 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;
}
Run Code Online (Sandbox Code Playgroud)

然后可以使用以下命令在控制器中调用助手:

$this->_helper->myHelper;
Run Code Online (Sandbox Code Playgroud)

如您所见,这假设您正在使用appNamespace'Application'.如果没有,您可以(必须!)修改您的班级名称以适应您的情况.

干杯!


Jur*_*man 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()
    );
}
Run Code Online (Sandbox Code Playgroud)

最后一点是您需要通过将此规则添加到application.ini来配置此库的使用:

autoLoaderNameSpaces[] = "MyLibrary_"
Run Code Online (Sandbox Code Playgroud)