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 表单 - 未定义路由的主要内容,如果未能解决你的问题,请参考以下文章