我对laravel中的表单有疑问。
web.php(路线)
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
Current.Services = host.Services; //Here
host.Run(Current.AppCancellationSource.Token);
}
TestController.php
Route::get('/test/{param1}/{param2}', [
'as' => 'test', 'uses' => 'TestController@test'
]);
我想添加将从输入生成URL的表单。
类似的东西:
class TestController extends Controller
{
public function test($param1, $param2)
{
$key = Test::take(100)
->where('offer_min', '<=', $param1)
->where('offer_max', '>=', $param1)
->where('period_min', '<=', $param2)
->where('period_max', '>=', $param2)
->get();
return view('test.index')->with('key', $key);
}
}
这应该生成如下URL:
{!! Form::open(array('route' => array('calculator', $_GET['param1'], $_GET['param2']), 'method' => 'get')) !!}
<input type="number" name="param1" value="Something">
<input type="number" name="param2" value="Something else">
<input type="submit" value="OK">
{!! Form::close() !!}
......但不起作用。
答案 0 :(得分:1)
您应该使用POST
方法发送表单数据:
Route::post('/test', ['as' => 'test', 'uses' => 'TestController@test']);
然后使用正确的路线名称并删除参数:
{!! Form::open(['route' => 'test']) !!}
然后使用Request
对象获取控制器中的数据:
public function test(Request $request)
{
$key = Test::take(100)
->where('offer_min', '<=', $request->param1)
->where('offer_max', '>=', $request->param1)
->where('period_min', '<=', $request->param2)
->where('period_max', '>=', $request->param2)
->get();
return view('test.index')->with('key', $key);
}
使用resource routes and controllers时,您应使用POST
或PUT
方法发送表单数据。