ThinkPHP控制器详解(3)

// redirect to /Article/index after 3 seconds when success $this->success('done','/Home/Article/index',3); // redirect to /Article/error after 5 seconds when failed $this->error('failed','/Home/Article/error',5);

如果不设置跳转时间,默认的等待时间success()方法是1秒,error()方法是3秒。看到上面的两个跳转地址前面都带上了/Home,如果你想简写为/Article/index,你需要在ThinkPHP的入口文件(项目目录下的index.php)中加上下面一行:

define('BIND_MODULE','Home');

而且这两个方法都有对应的模板,默认的设置是两个方法对应的模板都是:

'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl',

'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
你可以根据自己的需要来修改模版。

重定向

Controller类的redirect()方法可以实现页面的重定向功能。
redirect()方法的参数用法和U函数的用法一致(参考上一部分URL生成部分),例如:

$this->redirect('/Home/Article/show', array('id' => 2), 3, 'Redirecting...');
上面的用法是停留3秒后跳转到Article控制器的show()操作,并且显示页面跳转中字样Redirecting...,重定向后会改变当前的URL地址。

为了成功进行测试,我们在IndexController下添加redirectToArticle()方法并写上上面那行代码:

public function redirectToArticle() { $this->redirect('/Home/Article/show', array('id' => 2), 3, 'Redirecting...'); }

然后我们创建一个ArticleController,并且为他添加show()方法:

namespace Home\Controller; use Think\Controller; class ArticleController extends Controller { public function show($id) { echo 'This is an Article Page'; // $id 变量我们后续会用到,现在只是演示跳转 } }

然后在浏览器访问::8999/Home/Index/redirectToArticle,等待三秒,你就可以看到跳转之后的页面了。

如果你仅仅是想重定向要一个指定的URL地址,而不是到某个模块的操作方法,可以直接使用redirect()函数重定向,例如

$this->redirect('/Home/Article/show/id/3', 'Redirecting...',3);

注:控制器的redirect()方法和redirect()函数的区别在于前者是用URL规则定义跳转地址,后者是一个纯粹的URL地址
注:好像官方文档是这样写的

$this->redirect('/New/category/cate_id/2', 5, '页面跳转中...');

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c3316bc93cfcb891429fcdf0eb320d9e.html