2015-07-09 120 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