2012-10-26 1 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

Да, Request :: редирект не больше не существует. Поэтому, чтобы легко перейти от 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); 
} 

}

Таким образом, вы будете иметь возможность использовать как Request :: перенаправлять и $ this-> request-> перенаправлять

+0

+1 Большое спасибо @ Владимир. Ваше решение отлично поработало! – Anthony

0

Kohana 3.3 Файл CamelCase keysensitive попытаться изменить

константный INDEX_PAGE = 'index.php/Статья';

не forguet переименовать контроллер файла article.php -> article.php

И заменить Request :: редирект() -> HTTP :: перенаправлять()

+0

Это слишком неоднозначно, слишком неполно. –

8

Вы получаете исключение потому что с Kohana 3.3, Request больше не имеет метода redirect.

Вы можете исправить свой пример, заменив

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

с

HTTP::redirect(self::INDEX_PAGE);

1

$ this-> перенаправлять ('статью/индекс');