好吧,我尝试创建一个基于钩子的插件系统,但我对钩子如何改变特定的控制器功能感到困惑,看下面的例子:
class Article extends CI_Controller
{
public function index()
{
$title = $this->input->post('title');
$body = $this->input->post('body');
//try to add a new line here using hooks
//maybe to add a new property like:
//$published = $this->input->post('date');
$this->my_db->save($article);
}
}
如何在评论行后添加新行?我试过钩子但不是很好的结果。另外,我认为使用钩子是创建插件系统而不更改核心代码的最佳方法。
提前致谢
答案 0 :(得分:0)
好的,我找到了答案(至少有一个选项)。你需要设置你需要的“钩点”,在我的情况下,我是这样做的:
class Article extends CI_Controller
{
public function index()
{
$title = $this->input->post('title');
$body = $this->input->post('body');
$article = new Article();
$article->setTitle($title);
$article->setBody($body);
do_action('before_persist', $article);
$this->my_db->save($article);
}
}
最后,我的“before_persist”函数具有正确的代码,以便为$ article对象添加新属性
register_hook('before_persist', 'add_date_article', $params);
如果使用CI挂钩,可以在自定义类中声明add_date_article函数。
function add_date_article($params)
{
$article = $params[0];
$published = $this->input->post('date');
$article->setPublished($publiched);
}