用户定义的功能,我可以在我的所有控制器中使用

Sup*_*oob 5 php zend-framework

我有一个项目,我正在使用ZendFramework,我也是这个框架中的新手.

所以我的问题是,

我想创建一个用户定义的函数,我可以在所有控制器中使用它.示例:我想创建一个函数来验证输入字段,我将在其中使用trim,htmlspecialchars和mysql_real_escape_string.我想在所有控制器中访问此功能.

我有一个解决方案,我将在我拥有的每个控制器中创建此功能,我认为这不是最好的解决方案.

谢谢

Liy*_*ali 8

基本控制器是一种解决方案,但对我来说不是最好的.你应该编写自己的Action Helper,他们应该这样做.

Action Helpers允许开发人员将运行时和/或按需功能注入任何扩展Zend_Controller_Action的Action Controller.Action Helpers旨在最大限度地减少扩展抽象Action Controller的必要性,以便注入通用的Action Controller功能.

手册中有更多信息.

让我们看看如何注册Action Helper路径,在application.ini中添加:

resources.frontController.actionHelperPaths.My_Controller_Action_Helper = "My/Controller/Action/Helper/"
Run Code Online (Sandbox Code Playgroud)

其中My是您自定义库的名称.

在路径中,My/Controller/Action/Helper/您可以添加如下文件MyActionHelper.php:

class My_Controller_Action_Helper_MyActionHelper extends Zend_Controller_Action_Helper_Abstract
{
    public function direct($input)
    {
        $output = mysql_real_escape_string($input);
        // trim, etc.
        return $output;
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是你需要做的!最后,您可以使用任何控制器访问您的操作助手$this->_helper->myActionHelper($input);.

如果您需要验证来自表单的输入,请查看Zend_FormZend_Filter.Zend_Filter本身可以使用StripTagsTrimString,它甚至是一种更好的方法.