路由在Laravel 5.0上无法正常工作(404错误)

时间:2015-05-14 16:08:15

标签: php laravel routes

我切换到Laravel 5.0并尝试自我介绍。

我有一个让我困惑的小问题:

我使用两个Controller类。第一个工作正常,但第二个被忽略。有人可以告诉我为什么吗?

routes.php文件

<div class="tags-hover-container" ng-show="tag.tagsHoverDisplay">
    <div class="tag-info-padding">
        <div class="tweets" ng-hide="!tag.quantity">
            <div class="percentage" ng-hide="tag.length">
                {{tag.tweet_percentage}}%
            </div>
            <div class="tweet-count">{{tag.quantity}} tweets</div>
        </div>

        <div class="tweets-direction" ng-show="!tag.quantity">
            0 tweets
        </div>
    </div>
</div>

IndexController.php

<?php
Route::controller('/', 'IndexController');
Route::controller('/rezeptliste', 'RecipelistController');

RecipelistController

<?php namespace App\Http\Controllers;

class IndexController extends Controller {
    public function getIndex() {
        return view('index');
    }
}

当我访问/它完美无缺。当我尝试访问/ rezeptliste时,我收到以下错误:

<?php namespace App\Http\Controllers;

class RecipelistController extends Controller {
    public function getIndex() {
        return view('recipelist');
    }
}

3 个答案:

答案 0 :(得分:4)

这里的问题是Laravel路线按列出的顺序进行评估。

这意味着,由于您的第一条路线'/'也匹配路线/rezeptliste,因此laravel会转到IndexController并寻找名为“rezeptliste”的方法。

相反,您的路线应按此顺序排序:

<?php
Route::controller('/rezeptliste', 'RecipelistController');
Route::controller('/', 'IndexController');

这样,/rezeptliste的专用网址将首先被“捕获”并发送到RecipelistController,而不是被IndexController路由捕获。

答案 1 :(得分:0)

请参阅the docs

向资源控制器添加其他路由部分
  

如果您需要向资源控制器添加超出默认资源路由的其他路由,则应在调用Route :: resource之前定义这些路由:

Route::get('photos/popular', 'PhotoController@method');
Route::resource('photos', 'PhotoController');

答案 2 :(得分:0)

如果你使用Route:controller(),那么你也必须在控制器方法中提到请求类型。像这样

class UserController extends Controller{
    public function getUserinfo(){
        //
    }

    public function postNewuser(){
        //
    }

}

因此,路线可以轻松识别您的请求方法。

现在您可以配置路线

Route::controller('user','UserController');

我认为它会正常工作