2012-10-26 2 views
5

J'utilise Kohana 3.3.0 et j'ai un contrôleur qui est censé enregistrer des articles de blog dans une base de données puis rediriger vers la page d'accueil, mon code est le suivant: -Kohana ErrorException [Erreur fatale]: Appel à la méthode non définie 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); 
} 

l'article enregistre dans la base de données, mais la ligne de redirection donne l'erreur: -

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

S'il vous plaît laissez-moi savoir comment je peux faire la redirection.

Merci

Répondre

4

Ouais, demande :: redirect n'existe plus. Donc, afin de passer facilement de 3.2 à 3.3 j'ai étendu la classe Kohana_Request et ajouté la méthode de redirection. Il suffit de créer Request.php dans les classes dossier et écrire

class Request extends Kohana_Request {

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

}

Alors vous serez en mesure d'utiliser les deux Demande :: redirect et $ this-> request-> redirigent

+0

+1 Merci beaucoup @Vladimir. Votre solution a bien fonctionné! – Anthony

0

Kohana 3.3 est CamelCase File keysensitive essayer de changer

const INDEX_PAGE = 'index.php/article';

ne le font pas forguet renommer votre fichier contrôleur article.php -> Article.php

Et remplacer Demande :: redirect() -> HTTP :: redirect()

+0

Ceci est trop ambigu, trop incomplet. –

8

Vous obtenez l'exception car à partir de Kohana 3.3, Request n'a plus la méthode redirect.

Vous pouvez fixer votre exemple en remplaçant

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

avec

HTTP::redirect(self::INDEX_PAGE);

4

dans votre contrôleur $this->redirect('page');

1

$ this-> redirect ('article/index');

Questions connexes