如何在Laravel中使用表单向URL添加少量参数

时间:2017-01-11 18:21:35

标签: php mysql forms laravel

我对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() !!}

......但不起作用。

1 个答案:

答案 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时,您应使用POSTPUT方法发送表单数据。