2015-07-09 118 views
0

自动添加我有这种形式:额外奇怪段由laravel

{!!Form::open(['route'=>'fastsearch.show'])!!} 

在routes.php文件,我有:

Route::resource('fastsearch','SearchController'); 

而且在SearchController我有一个方法show()那发送返回到一个名为fastsearch的视图(这是fastsearch.blade.php)

如果我查看窗体的页面源,我看到这个:

<form method="POST" action="http://localhost:8000/fastsearch/%7Bfastsearch%7D" accept-charset="UTF-8"><input name="_token" type="hidden" value="hLcSkGk2p5XfTkFEv2pwGgcVQB18vHQIGMpOVGpM"> 

如果我把一些数据表格,然后点击提交,我得到这个错误:

​​

我的问题是,为什么在动作URL的附加段(这一个:/%7Bfastsearch% 7D)。路线有问题吗? (为了给你所有的细节,这是一个几乎遍布每个页面的一般搜索表单,以便用户可以在当时几乎每个页面上运行快速搜索,所以它不会运行,无论你是在主页上还是在/ Home/Subpage/SubSubPage {通配符} {通配符},你仍然可以看到该表单并使用它)

回答

1

你正试图发送一个post请求到期望的路由一个get请求。

变化:

{!! Form::open(['route'=>'fastsearch.show']) !!} 

要:

{!! Form::open(['route'=>'fastsearch.index']) !!} 

哪里index是您希望收到post请求的动作名称。

你可能更适合使用特定的命名路线。

Route::post('fastsearch', [ 
    'as' => 'fastsearch.search', 'uses' => '[email protected]' 
]); 

看看http://laravel.com/docs/5.1/controllers#restful-resource-controllers有关资源控制器的更多信息,并http://laravel.com/docs/5.1/routing#named-routes更多关于命名路由。

您还可以使用./artisan route:list获取现有路线的列表。

+0

谢谢。这让我更清楚了一点。我会尝试这些方法。 – Texas