2012-03-19 83 views
4

我有一个提交条目的破拆表单。该表格由标题,url_title和说明组成。我想创建一个扩展钩子,如果它们存在于条目的title中,则会过滤掉某些词。表达式引擎挂钩

我已经有一个功能,照顾清洗function clean(){....}。我知道我们需要使用扩展钩,因此我们可以在保存条目时清除标题。

我需要使用什么扩展钩。你能给我一个完整的扩展钩子的例子吗?我对PHP非常好,但对于钩子以及它们应该如何实现还是新的。我已经阅读了EE文档,但仍然发现如何使用挂钩的一些混淆

回答

5

首先转到http://pkg.io/并获取您的基本扩展名文件。

如果输入不干净的单词,您可能会想要使用'safecracker_submit_entry_start'钩子来引发错误。扩展的最重要的部分是注册你想使用的方法和钩子,否则没有代码会运行。

您的代码应该是这个样子:

public function activate_extension() 
{ 
    // Setup custom settings in this array. 
    $this->settings = array(); 

    $data = array(
     'class'  => __CLASS__, 
     'method' => 'clean', // point to the method that should run 
     'hook'  => 'safecracker_submit_entry_end', // point to the hook you want to use to trigger the above method. 
     'settings' => serialize($this->settings), 
     'version' => $this->version, 
     'enabled' => 'y' 
    ); 

    $this->EE->db->insert('extensions', $data);   

} 

一旦方法被调用,你就可以开始你的清洁。在定义它时,确保将safecracker对象传递给干净的方法。例如:

public function clean($sc){ 
    print_r($sc); 
} 
+0

谢谢@philip。这真的很有帮助。感谢您的链接。我唯一的问题是我如何告诉clean函数清理$ _POST ['title'],因为我想清除提交的条目的标题。在干净的功能里面我应该有一些像$ _POST ['title'] = clean($ _ POST ['title']);.我希望标题在发送到数据库之前进行清理。 – Pinkie 2012-03-21 02:39:46

+0

您可以在挂钩调用的方法内部执行此操作。你想要它真的清洁它吗?或拒绝某些关键字的标题? – 2012-03-21 16:57:04

+0

您可能还在寻找:$ this-> EE-> output-> show_user_error(“FooBar”) – 2012-03-21 17:00:29