【问题标题】:Laravel: Cannot route to expected URLLaravel:无法路由到预期的 URL
【发布时间】:2016-10-22 12:35:37
【问题描述】:

这是我的导航栏:

 <div class="col-md-2">
        <ul class="list-group-item">
            <li><a href="/posts"><i class="fa fa-fw fa-file</i>&nbsp;&nbsp;All Post</a>
            </li>
            <li><a href="/posts/create"><i class="fa fa-fw fa-plus-circle"></i>&nbsp;&nbsp;Create New Post</a></li>
            <li><a href="/posts/manage"><i class="fa fa-fw fa-tasks"></i>&nbsp;&nbsp;Manage Posts</a></li>
        </ul>
</div>

这是我的 route.php

Route::group(['prefix' => 'posts'], function(){
Route::get('', 'PostController@index');
Route::get('create', 'PostController@create');
Route::post('confirm', 'PostController@confirmation');
Route::get('{postID}', 'PostController@show');
Route::get('posts/manage', 'PostController@manage');});

我希望当我点击“管理帖子”按钮时,它会将我重定向到我的PostController 中的manage()

但是当我点击它时,它会重定向到属于storage/framework/views 的视图,即我的PostController 中的show()

我不知道为什么以及如何将其转到正确的网址。

有人可以帮我解决这个问题吗?

谢谢。

【问题讨论】:

    标签: php laravel url view routes


    【解决方案1】:

    首先,您的链接指向/posts/management,而不是/posts/manage。其次,您已经拥有此路由组的前缀 posts,因此路由 posts/manage 将在 url /posts/posts/manage 下可用。

    您还想将manage 路由移到您的{postID} 路由之前,因为{postID} 只会捕获任何东西,因此路由器必须首先检查管理路由,并且仅如果不匹配,则使用包罗万象的路线。

    并且您应该使用Route Parameters: Regular Expression Constraints 控制被接受为有效postID 的内容。

    Route::get('{postID}', 'PostController@show')-&gt;where('id', '[0-9]+');

    【讨论】:

    • 是的,我忘了改回来。我遇到了这个问题,所以我试图把它带到一个新的网址,看看这个问题是否消失了,但它仍然是一样的。除了管理一条之外,所有其他路线都做得很好并且工作正常。
    • 非常感谢,在 {postID} 之前移动 manage 路线。
    • 当我向上移动manage 路线时,Route::get('{postID}, 'PostController@show'); 不再起作用。它返回一个空白页。你能给我一个解决方案吗?
    • 你忘记了'
    猜你喜欢
    • 2021-10-03
    • 2020-05-13
    • 2014-11-25
    • 2018-01-18
    • 2019-07-24
    • 2021-08-10
    • 1970-01-01
    • 2014-08-19
    • 2016-07-09
    相关资源
    最近更新 更多