Laravel 表单 - 未定义路由

Posted

技术标签:

【中文标题】Laravel 表单 - 未定义路由【英文标题】:Laravel forms - route not defined 【发布时间】: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。

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

【问题讨论】:

【参考方案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']);

【讨论】:

以上是关于Laravel 表单 - 未定义路由的主要内容,如果未能解决你的问题,请参考以下文章

我在 Laravel 中的表单出现“路由未定义错误”

Laravel 5.1 UrlGenerator 路由未定义错误

Laravel 路由动作未定义

Laravel 路由错误:路由 [登录] 未定义

Laravel 路由未定义错误

Laravel 8 中未定义命名路由