2012-10-26 25 views
5

私はKohana 3.3.0を使用しています。ブログ記事をデータベースに保存してからホームページにリダイレクトするコントローラがあります。次のようにコードがある: -Kohana ErrorException [致命的なエラー]:未定義のメソッドを呼び出すRequest :: redirect()

class Controller_Article extends Controller { 

const INDEX_PAGE = 'index.php/article'; 

public function action_post() { 

$article_id = $this->request->param('id'); 
$article = new Model_Article($article_id); 
$article->values($_POST); // populate $article object from $_POST array 
$article->save(); // saves article to database 

$this->request->redirect(self::INDEX_PAGE); 
} 

記事では、データベースに保存されますが、リダイレクト行がエラーを与える: -

ErrorException [ Fatal Error ]: Call to undefined method Request::redirect() 

私はリダイレクトを行うことができますどのように教えてください。

おかげ

答えて

4

そうで

HTTP::redirect(self::INDEX_PAGE);

+0

+1ありがとう@ウラジミール。あなたのソリューションは素晴らしかったです! – Anthony

0

Kohanaの3.3は

のconst INDEX_PAGE = 'index.phpを/記事' を変更してみてくださいkeysensitiveファイルキャメルケースです。 > Article.php

と)(要求::リダイレクトを置き換える - - > HTTP ::あなたは例外を取得している)(

+0

これはあまりにもあいまいすぎて、あまりにも不完全です。 –

8

をリダイレクト

は、コントローラのファイルの名前を変更article.php forguetありませんKohana 3.3以降ではRequestはメソッドredirectを持っていないためです。

あなたは要求::リダイレクトは長くないが存在し、あなたのコントローラ$this->redirect('page');

4

$this->request->redirect(self::INDEX_PAGE);

を置き換えることによって、あなたの例を修正することができます。 3.2から3.3に簡単に移行するために、Kohana_Requestクラスを拡張し、リダイレクトメソッドを追加しました。ただ、クラスフォルダにRequest.phpを作成し、ですから、両方要求を使用することができるようになります

class Request extends Kohana_Request {

/** 
* Kohana Redirect Method 
* @param string $url 
*/ 
public function redirect($url) { 
    HTTP::redirect($url); 
} 

}

を書く::をリダイレクトし、ます$ this->要求 - >は

1

をリダイレクト$ this-> redirect( '記事/インデックス');

関連する問題