【问题标题】:Laravel doesn't recognize a valid routeLaravel 无法识别有效路线
【发布时间】:2014-06-18 01:29:50
【问题描述】:

我将 Laravel 用于猫管理应用程序,但在创建猫时遇到问题,因为 Laravel 为我的路线返回 404。

Route::get('cats/create', function() {
    $cat = new Cat;
    return View::make('cats.edit')
    ->with('cat',$cat)
    ->with('method','post');
});

此路由返回一个堆栈跟踪,该跟踪会引发一个未找到的 HTTP 异常。

为什么这不起作用? 我输入的地址是

localhost:8000/cats/create

这是 PHP 工匠路线的结果。

【问题讨论】:

  • 其他路线是否有效?如果不是,则可能是 URL 重写的问题。
  • 是的,其他路线正在运行
  • 那可能是和其他路由冲突了。如果您的路由与 Route::get() 声明中声明的多个模式匹配,则可能导致意外行为。
  • 尝试从命令行运行php artisan routes,看看是否一切正常。
  • php artisan routes 显示什么?

标签: php mysql laravel


【解决方案1】:

我认为路线需要以正斜杠开头

改变:

Route::get('cats/create', function() {

到:

Route::get('/cats/create', function() {

最终输出:

Route::get('/cats/create', function() {
    $cat = new Cat;
    return View::make('cats.edit')
    ->with('cat',$cat)
    ->with('method','post');
});

【讨论】:

  • 我从来没有这样做过,它总是对我有用,没有第一个斜杠字符。
【解决方案2】:

您必须重新排列您的路由定义,以便在 cat/{cat} 的路由之前定义 cat/create 的路由。

【讨论】:

  • 详细来说,路由按照定义的顺序匹配。
【解决方案3】:

您的应用程序中有以下路由:

GET|HEAD cats/{cat}
GET|HEAD cats/create

如果你点击http://localhost/cats/create,那将被 first 路由匹配。看起来您正在使用 Route Model Binding,因此您的应用程序试图将“create”解释为 cats 模型实例的 ID - 这就是它失败的地方。

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多