Laravel 5.1 - 路线不起作用

时间:2016-06-19 10:39:53

标签: php laravel laravel-5.1

我的路线有问题,我有路线:

Route::get('dashboard/password', 'UserController@password');

Route::post('dashboard/updatepassword', 'UserController@updatePassword');

// PAGINA UTENTE  PUBBLICA

Route::get('/{username}', 'FrontController@user');


// blog routes

    Route::get('blog', 'FrontController@blog');
    Route::get('blog/{slug}', 'FrontController@article');
    Route::get('blog/category/{name}', 'FrontController@BlogCategory');
    Route::get('blog/tag/{name}', 'FrontController@tags');

    Route::resource('comment', 'CommentController');

和我的FrontController:

public function blog()
    {

        $articles = Article::OrderBy('id','DESC')->paginate(3);
        $Allarticles = Article::OrderBy('id','DESC')->get();
        $Allcategories = BlogCategory::OrderBy('id','DESC')->get();
        $Alltags = Tag::OrderBy('id','DESC')->get();
        $Allcomments = Comment::OrderBy('id','DESC')->take(3)->get();

        return view('blog', compact('articles','Alltags','Allarticles','Allcategories','Allcomments'));
    }

如果我去" http://localhost:8000/blog"它回到我以前的页面。类似于route-> back()。

我不知道为什么我有这个问题,其他博客路线运作良好。

我做了一些这样的测试:

public function blog()
        {
            return "Hi";

        }

它没有返回"嗨",所以我认为这是路线的问题。我这里没有可用的中间件,我的博客/文章等其他路线运行良好。

3 个答案:

答案 0 :(得分:1)

您可以发布路线文件的内容吗? 如果'blog'的任何路线高于您发布的包含参数的路线(例如Route::get('blog/{blog_post_id}, ...),请尝试将其移至文件中的'blog'下方。

如果不是上述内容那么听起来可能会有一些缓存在玩耍的东西,当我正在运行我的优化以查看生产环境将如何执行并且我忘记时,它通常会抓住我清除所有的缓存,这是我通常的修复(我有别名,因为我经常弄乱这个);

php artisan route:clear
php artisan view:clear
php artisan cache:clear (Side note, clears all auth sessions, will require a re-log)
composer dump-autoload
php artisan optimize --force

这将完全清除为路由,视图和授权创建的所有缓存。

同时检查您的Laravel日志和Apache / NginX日志,总是值得一看

答案 1 :(得分:0)

好的我修好了,问题是:

Route::get('/{username}', 'FrontController@user');

这里有一些错误,我不知道错误,也许是路径,我删除了它,它正常工作。

答案 2 :(得分:0)

您的问题是路线文件中的模式匹配。似乎将路由分配给与URI匹配的第一个路由。

Route::get('/{username}', 'FrontController@user');
Route::get('blog', 'FrontController@blog');

http://localhost:8000/blog会匹配这两条路线,因为{username}可能是blog,因此始终会使用Route::get('/{username}', 'FrontController@user');

您必须在路线名称中更具体(例如,添加更多文字)或更具体的路线顺序。以下是您想要的当前路线的示例。

Route::get('dashboard/password', 'UserController@password');

Route::post('dashboard/updatepassword', 'UserController@updatePassword');

// blog routes

    Route::get('blog', 'FrontController@blog');
    Route::get('blog/{slug}', 'FrontController@article');
    Route::get('blog/category/{name}', 'FrontController@BlogCategory');
    Route::get('blog/tag/{name}', 'FrontController@tags');

    Route::resource('comment', 'CommentController');

// PAGINA UTENTE  PUBBLICA

Route::get('{username}', 'FrontController@user');