【问题标题】:Laravel Routing Conflict issueLaravel 路由冲突问题
【发布时间】:2015-09-27 07:27:29
【问题描述】:

我在 laravel 中有以下网址:

1.需要更改自:

localhost/laravel/page/2/

localhost/laravel/2/

我的 Route.php 是

Route::get('page/{id}/',
          array(
        'as'   => 'page', 'uses' =>'Frontcontroller@page'));

但是当我改成这个的时候,

Route::get('/{id}/',
          array(
        'as'   => 'page', 'uses' =>'Frontcontroller@page'));

我注意到它与其他路线存在冲突问题 ,请帮帮我

提前感谢

【问题讨论】:

    标签: laravel laravel-4 laravel-5 laravel-routing


    【解决方案1】:

    只需在所有其他路由的最后声明新路由并添加一个 where 子句,例如,尝试这样的操作:

    //All other routes ...
    
    Route::get(
        '/{id}',
        ['as' => 'page', 'uses' =>'Frontcontroller@page']
    );
    

    您也可以像这样添加where 子句:

    Route::get(
        '/{id}',
        ['as' => 'page', 'uses' =>'Frontcontroller@page']
    )
    ->where('id', '[0-9]+'); // for id as integer
    

    【讨论】:

    • Thanx,它运作良好,但如果我想要一个 {title} 而不是 {id} ,那么条件会是什么..
    • 在这种情况下,{id} 应该是 {title},并且在 where 子句中它应该是 title 而不是 id
    • 如果是字符串,那么它应该是 [a-z]+ 或者您可以完全删除 where 子句。
    • 我的 Route.php 是 Route::get('/{title}/', array( 'as' => 'page', 'uses' =>'Frontcontroller@page'))- >where('title', '[az\-]+'); Route::get('blog', array('as' => 'blog', 'uses' =>'Frontcontroller@blog'));我的网址是localhost/laravel/contact-us 页面但是当转到localhost/laravel/blog 时它给我错误----尝试获取非对象的属性(视图:F:\wamp\www\laravel\local\resources\views\ page.blade.php)
    • 删除 where 子句即可。
    猜你喜欢
    • 2017-04-15
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多