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);

 }
} 

コメント行の後に新しい行を追加するにはどうすればよいですか? フックを試してみましたが、良い結果ではありませんでした。さらに、コア コードを変更せずにプラグイン システムを作成するには、フックを使用するのが最善の方法であると考えました。

前もって感謝します

4

1 に答える 1

0

OK、答えが見つかりました(少なくとも1つのオプション)。必要な数の「フックポイント」を設定する必要があります。私の場合、次のようにしました:

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);

 }
} 

最後に、$article オブジェクトに新しいプロパティを追加するために、私の「before_persist」関数には正しいコードがあります。

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);
}
于 2012-06-17T15:03:41.583 に答える