Zend Action助手

时间:2011-01-15 17:55:05

标签: zend-framework

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

由于 约翰

4 个答案:

答案 0 :(得分:16)

关于将自定义操作助手放在何处的两个想法:

  1. 在单独的自定义库中
  2. 在文件夹application/controllers/helpers
  3. 这些想法并不是唯一的。通常可以在多个项目中工作的功能应该被拉入一个单独的库中。但是对于特定于应用程序的功能,有一个论点是它可能位于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遵循相同的建议模式。