Laravel 4 通配符路由到不同的控制器

Posted

技术标签:

【中文标题】Laravel 4 通配符路由到不同的控制器【英文标题】:Laravel 4 Wildcard Routing to Different Controllers 【发布时间】:2013-05-19 07:34:12 【问题描述】:

意识到我会为此受到打击,我在构建 laravel 路线时有几个关于“最佳实践”的问题。

    laravel 路由是否从上到下运行“先到先得”?那么如果找到了一个路由,是不是把控制权交给控制器(或者执行动作)然后终止呢?

    我的应用程序中有一部分充当 URL 缩短器。所以,我的路线看起来像这样:

Route::get('/id', array('as' => 'home.text', 'uses' => 'HomeController@text'), function($id) //在推送到控制器之前确保ID存在。 if (Storage::where('shortcode','=', $id)->count() > 0) //找到的路径 );

如何改进?一方面,我不确定如何有条件地将处理传递给控制器​​。就像某种 Controller::make() ..?

3)在 laravel 中是否有更好的方法来检查记录是否存在而不是做

  Mode::where('column','=','value')->count()

4) 我有一些类似 http://url.com/?p=6&id=wujbl 的旧版网址。是否可以设计路线以匹配 ?p=number&id=id ?有没有更好的处理方法?

谢谢!

【问题讨论】:

您正在寻找路由过滤器。稍后我会发布一个示例。 @extreme:你不可能挨打——这是一个不错的问题。而且,我同意萨扬的观点。路由过滤器可能更好。尽管如此,你正在做的事情没有任何问题。路线确实以先到先得的方式运行。 【参考方案1】:

对于 url 缩短器,您可以使用 catch all 路由,如果有 URL 重定向到它,否则您可以检查它的查询字符串。

【讨论】:

以上是关于Laravel 4 通配符路由到不同的控制器的主要内容,如果未能解决你的问题,请参考以下文章

Laravel,路由通配符过滤然后控制器

Laravel 5.6 通配符路由在域中未按预期运行

带有通配符的 Laravel 路由总是 404

Laravel 5:API 路由 + 通配符路由导致意外行为

Laravel 5.1 通配符路由

Laravel 4:创建默认路由