这只是一个查询表单。我搜索了这个问题并尝试了我找到的许多解决方案,但没有一个解决了这个问题。
Laravel版本: 5.4.23 。使用 Blade 模板引擎。
我的路线:
Route::post('products/search', 'ProductsController@search');
我的表单:
{{Form::open(['url' => ['products/search']])}}
{{Form::text('search', $search)}}
{{Form::submit('Search')}}
{{Form::close()}}
我的控制器:
class ProductsController extends Controller
{
...
public function search(Request $request) {
dd('This point is never reached.');
return view(...
}
}
备注:
我尝试将路线更改为Route::get
,但没有奏效。试图将我的表单方法更改为GET,如{{Form::open(['method' => 'GET', 'url' => ['products/search']])}}
,但没有成功。
答案 0 :(得分:0)
所以问题可能是:
<强>解决方法1 即可。你可以在其上定义另一条路线,例如:Route::get('products/{wildcard}', 'Controller'}
,在这种情况下,请确保将所有其他路线放在您尝试开始工作的路线下。
<强>溶液2 强>
继续并删除控制器。然后运行composer dump-autoload
然后在命令行php artisan make:controller UserController
上运行该命令,然后粘贴您拥有的配置文件方法。
解决方案3 您可能已缓存路线,所以:php artisan route:clear
解决方案4 。将网址更改为
{{ Form::open(array('url' => 'foo/bar')) }}
//
{{ Form::close() }}
答案 1 :(得分:0)
我不知道框架,但为什么形式为数组的url
值?
我原以为你想要像
这样的东西Form::open(['url' => 'products/search'])
根据文档,默认表单方法为POST
,因此您应将路由保持为Route::post
。如果您想将方法更改为GET
(我建议您进行搜索操作),只需使用Route::get
和
Form::open(['url' => 'products/search', 'method' => 'get'])
似乎你也可以通过action
属性使用命名路由名称甚至控制器方法,即
Form::open(['action' => 'ProductsController@search'])
答案 2 :(得分:0)
我认为您需要更改刀片文件,如:
{{Form::open(['url' => ['products/search']])}}
TO
{{Form::open(['url' => 'products/search'])}}
OR 您可以在路线中添加路线名称,如:
Route::post('products/search', 'ProductsController@search')->name('products.search');
{{ Form::open(['route' => 'products.search', 'method' => 'post']) }}
希望这能帮到你