【问题标题】:Laravel forms - route not definedLaravel 表单 - 未定义路由
【发布时间】:2015-01-07 19:17:11
【问题描述】:

我正在使用 laravel 创建简单的表单:

    {{ Form::open(array('route' => 'postrequest')) }}
    {{ Form::text('Name') }}
    {{ Form::text('Surname') }}         
    {{ Form::submit('submit') }}
    {{ Form::close() }}

在我的 routes.php 文件中定义了路由:

Route::post('postrequest', function() 
{   
    return View::make('home');
});

但我在日志文件中遇到错误:

下一个异常 'ErrorException' 带有消息'Route [postrequest] not defined。

我在互联网上找不到解决方案。我做错了什么?

【问题讨论】:

    标签: php forms exception laravel routes


    【解决方案1】:

    你尝试在这里使用命名路由。如果您想这样做,您需要将您的路线更改为:

    Route::post('postrequest', array('as' => 'postrequest', function() 
    {   
        return View::make('home');
    }));
    

    或者您当然可以更改使用直接 url 打开表单的方式:

    {{ Form::open(array('url' => 'postrequest')) }}
    

    但是你真的应该考虑使用named routes

    【讨论】:

    • 因为在您的代码中,您创建了具有精确 url(没有名称)的路由,如果您在表单中使用 route ,这意味着您想要使用您给定的名称的路由。所以 Laravel 正在寻找名称为 postrequest 的路线,但它没有找到任何路线,因为您没有为您的路线提供任何名称。
    • 如果我使用 ('url' => 'postrequest') 框架将使用 routes.php 中定义的路由 url?
    • 是的,它最终会使用在 routes.php 中定义的路由,但是当您决定更改 url 时,您需要在 rotues 和表单中更改它们,当使用命名路由时,您将只更改 url和路线并留下名字而不改变
    • 不错。我试图使用“方法”将 URL 传递给 Form::open,它将该方法视为路由而不是 URL。相反,通过“url”元素传递 url 是对我有用的修复程序,尽管问题略有不同。谢谢。
    【解决方案2】:

    用post方法打开表单

    {{ Form::open(array('url' => 'postrequest', 'method' => 'post')) }}
    

    既然你已经为发布请求写了路由。

    【讨论】:

    • 方法被隐式设置为'post'。
    【解决方案3】:

    如果您想在路由中引用控制器方法,您必须执行以下操作:

    Route::post('postrequest', ['as' => 'postrequest', 'uses' => 'RequestController@store']);
    

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2018-12-16
      • 1970-01-01
      • 2020-02-06
      • 2015-01-16
      相关资源
      最近更新 更多