我有一个项目,我正在使用ZendFramework,我也是这个框架中的新手。
所以我的问题是,
我想创建一个用户定义的函数,我可以在所有控制器中使用它。示例:我想创建一个函数来验证输入字段,我将在其中使用trim,htmlspecialchars和mysql_real_escape_string。我想在所有控制器中访问此功能。
我有一个解决方案,我将在我拥有的每个控制器中创建此功能,我认为这不是最好的解决方案。
由于
答案 0 :(得分:8)
基本控制器是一种解决方案,但对我来说不是最好的。您应该编写自己的动作助手,他们应该这样做。
Action Helpers允许开发人员注入运行时和/或按需 扩展的任何动作控制器的功能 化Zend_Controller_Action。行动助手旨在尽量减少必要性 扩展抽象的Action Controller以便注入常见的 动作控制器功能。
更多信息here in the manual。
让我们看看如何注册您的Action Helper路径,将其添加到您的application.ini中:
resources.frontController.actionHelperPaths.My_Controller_Action_Helper = "My/Controller/Action/Helper/"
其中我的是您自定义库的名称。
在路径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;
}
}
这就是你需要做的一切!最后,您可以使用$this->_helper->myActionHelper($input);
从任何控制器访问您的操作助手。
如果您需要验证来自表单的输入,请查看Zend_Form和Zend_Filter。 Zend_Filter本身可以StripTags和TrimString,它甚至是更好的方法。
答案 1 :(得分:1)
创建文件Util.php将其放在库文件夹中 并在其中添加所需数量的函数,然后打开index.php(在公共文件夹中)
添加
require_once 'Util.php';
行后
require_once 'Zend/Application.php';
因此,例如,你的Util.php将会像
一样 function mysql_real_escape_string($value)
{
return $value
}
function logger($value)
{
Zend_Regsitry::get('logger')->log($value);
}
function _T($translate)
{
return Zend_Registry::get('translator')->translate($translate);
}
现在所有这些功能都是全局的,您可以在zf应用程序的任何位置随意调用它们。我用我的每个ZF项目做这件事。在此处添加功能以进行翻译或记录可以节省时间。
答案 2 :(得分:0)
Zend Framework有Zend_Controller_Action_Helper。