我这个类扩展了Controller_Template。
<?php defined('SYSPATH') or die('No direct script access.');
abstract class Controller_Common extends Controller_Template {
public $template = 'main';
public function before()
{
parent::before();
View::set_global('title', 'Мій сайт');
View::set_global('description', 'Сайт');
$this->template->content = '';
$this->template->styles = array('style');
$this->template->scripts = '';
}
} // End Common
在控制器类中,我想重定向到另一个动作。
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_User extends Controller_Common {
public function action_info()
{
$this->template->content = View::factory('user/info')
->bind('user', $user);
// Load the user information
$user = Auth::instance()->get_user();
// if a user is not logged in, redirect to login page
if (!$user)
{
Request::current()->redirect('user/login');
}
}
public function action_login()
{
try{
if (HTTP_Request::POST == $this->request->method())
{
// Attempt to login user
$remember = array_key_exists('remember', $this->request->post()) ? (bool) $this->request->post('remember') : FALSE;
$username = $this->request->post('username');
$password = $this->request->post('password');
$user = Auth::instance()->login($username, $password, true);
$logged = Auth::instance()->logged_in('login');
// If successful, redirect user
if($user)
{
$this->redirect("user/info");
}
else
{
$message = 'Login failed';
}
}
/**/
}catch(Exception $e)
{
var_dump($e->getMessage());
}
$this->template->content = View::factory('user/login')
->bind('message', $message);
}
public function action_logout()
{
/*// Log user out
Auth::instance()->logout();
// Redirect to login page
Request::current()->redirect('user/login');*/
}
}
?>
我在action_login
中使用此代码$this->redirect("user/info");
但重定向不起作用。如何解决这个问题? 我使用Kohana 3.3.0版本
答案 0 :(得分:2)
Request
类没有redirect
方法。见userguide:
HTTP::redirect('user/login', 302);
或
self::redirect('user/login', 302);
PS。 Controller::redirect()
是static method,因此用户指南示例似乎不正确。
答案 1 :(得分:1)
从action_login中删除try..catch,http :: redirect使用重定向例外HTTP::Redirect。
P.S。您可以使用 $ this 或 self 进行重定向,$this vs self