2012-06-15 6 views
0

Ну, я пытаюсь создать систему плагинов, основанный на крючках, но я так запутался в том, как крючки могут изменить определенную функцию контроллера, смотрите пример ниже:Крючки внутри контроллера

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

ОК, я нашел ответ (по крайней мере, один вариант) .Вы необходимо установить «точки крюка» столько, сколько нужно, в моем случае я сделал это таким образом:

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» есть правильный код, чтобы добавить новые свойства $ статьи объекта

register_hook('before_persist', 'add_date_article', $params); 

функция add_date_article может быть объявлен в пользовательском классе, если вы горе rking с крючками CI.

function add_date_article($params) 
{ 
    $article = $params[0]; 
    $published = $this->input->post('date'); 
    $article->setPublished($publiched); 
} 
Смежные вопросы