为什么laravel不能直接访问控制器方法呢?

刚用laravel,不能理解为什么它不能像thinkphp、ci那种直接通过地址访问控制器方法,还需要为每天方法设置路由,或者用restful路由在每个方法前面加上get/post,这样不是很麻烦么? 请问这样设计的思路是什么?

12 个评论

FiveSay

FiveSay

首先:下回不要把问题再发布成文章了。
接下来回答你的问题:
www.myapp.com/a3ky
www.myapp.com/post/21/comment/1/edit
username.myapp.com/blog
请尝试用 thinkphp 实现一下用这几个 url 来访问你的控制器,并分别取得对应的参数:
a3ky
21 和 1
username
还有更高能的:
www.myapp.com/demo.doc
www.myapp.com/demo.jpg
这些也都可以直接指向控制器的方法。

如果以上这些你都可以用弱化路由的框架轻松实现的话,那你就没有必要纠结这个问题了。
2014-11-07 22:56
qufo

qufo

@FiveSay , TP采用的方法是指定路由格式,限制完后只能按框架提供的几种格式之一进行访问,其实相当于说框架制定了规则。

而laravel的路由灵活得多。在  TP 下束缚习惯了到 laravel 就会不适应。就是这样。
2014-11-08 01:02
demon_cry

demon_cry

@FiveSay,@qufo : thinkphp,codeigniter都有正则路由功能 上面那些都能实现啊?
'/^(a3ky)$/i' => 'Default/Test/a1?v=:1',
'/^post\/(.*)\/comment\/(.*)\/edit$/i' => 'Default/Test/edit?post=:1&comment=:2',
'demo.doc' => 'Default/Test/f1'
...
2014-11-08 16:57
FiveSay

FiveSay

1、文章的评论里是@不到人的。
2、对比 laravel 的路由,哪一种更直观?
3、你漏了这个:username.myapp.com/blog
2014-11-08 17:42
一一逍遥

一一逍遥

其实你说的这个确实是laravel了一个欠缺,laravel的路由模式以及很多思想都是来源于rails。在rails里面是有这样一个路由的 match ':controller(/:action(/:id))(.:format)' 这个就是用来匹配所有controller和控制器的。跟你说的其他的一些限定式的框架路由效果一样。但是又比他们多了一些优势,就是路由传参。
2014-11-09 08:49
一一逍遥

一一逍遥 回复 一一逍遥

# This is a legacy wild controller route that's not recommended for RESTful applications.
# Note: This route will make all actions in every controller accessible via GET requests.
# match ':controller(/:action(/:id))(.:format)'
2014-11-09 08:50
FiveSay

FiveSay

laravel 3 时代是有你所描述的通用路由的,在 laravel 4 中之所以取消是有他的道理的,不论是在系统安全性,还是路由效率上,我认为都是有益的。
2014-11-09 22:49
demon_cry

demon_cry

嗯 谢谢你们的说明,我之前做的项目一直用的是codeigniter和thinkphp 这两个框架在结构上面还是比较老了 新接触laravel 觉得很新颖 所以想理解下这种设计思路
2014-11-12 14:14
demon_cry

demon_cry 回复 一一逍遥

看了这个英语终于理解了 laravel可以接收各种请求方式,以前老的框架只能通过get请求进入 ,太感谢了!
2014-11-12 14:30
一一逍遥

一一逍遥 回复 FiveSay

路由的规则是前面的匹配优先,后面的根本不会被执行。效率上应该是没有影响的。至于安全我觉得应该影响不大
2014-11-12 18:12
一一逍遥

一一逍遥 回复 demon_cry

其实你去了解下resful就知道了
2014-11-12 18:15
demon_cry

demon_cry 回复 一一逍遥

嗯 就是 之前查过restful 没理解到http请求 现在理解了 太感谢了
2014-11-13 10:36

要回复文章请先登录注册