我来自CodeIgniter。
如果您有这样的控制器:
class Article extends CI_Controller{
public function comments()
{
echo 'Look at this!';
}
}
您可以使用以下网址访问comments()
功能:example.com/Article/comments
Route::get('/Article/comments}', 'ArticleController@comments');
但是我希望有一种更有活力的方式去做,因为我不想继续为每个功能创建新的路线
答案 0 :(得分:3)
对于Laravel用户,通过URL动态调用控制器方法的推荐方法是通过RESTful控制器:
<?php
class ArticleController extends controller {
public function getComment()
{
return 'This is only accesible via GET method';
}
public function postComment()
{
return 'This is only accesible via POST method';
}
}
使用告诉Laravel创建你的路线这是一个RESTful控制器:
Route::controller('articles', 'ArticlesController');
然后,如果你按照
http://laravel.dev/articles/comments
使用您的浏览器,您应该收到:
This is only accesible via GET method
命名控制器方法的方式(getComment,postComment,deleteComment ...)告诉Laravel应该使用HTTP方法来调用这些方法。
检查文档:http://laravel.com/docs/controllers#restful-controllers
但你也可以使用PHP使其动态化:
class ArticlesController extends Controller {
public function comments()
{
return 'Look at this!';
}
public function execute($method)
{
return $this->{$method}();
}
}
使用像这样的控制器:
Route::get('Article/{method}', 'ArticleController@execute');
然后你必须
http://laravel.dev/Article/comments
答案 1 :(得分:1)
我建议您坚持使用laravel的方式创建REST controllers
,因为这样您就可以控制使用控制器方法调用HTTP Verb
的内容。如果您想在Laravel中指定HTTP Verb
请求方法的名称,那么执行此操作的方法只是在控制器方法前面添加comments
,方法GET
看起来像getComments
。
例如,如果您需要对GET
URI执行article/comments
请求,然后创建新评论,则要使用与另一个HTTP
动词相同的URI,让我们说POST
,你只需要这样做:
class ArticleController extends BaseController{
// GET: article/comments
public function getComments()
{
echo 'Look at this!';
}
// POST: article/comments
public function postComments()
{
// Do Something
}
}
进一步阅读: http://laravel.com/docs/controllers#restful-controllers
现在,为了您的具体答案,这是Laravel按照您的要求行事的方式:
class ArticleController extends BaseController{
public function getComments()
{
echo 'Look at this!';
}
}
并在routes.php
文件中,您需要按如下方式添加控制器:
Route::controller('articles', 'ArticleController');