【问题标题】:Laravel 5 Build url with Laravel Form Get methodLaravel 5 使用 Laravel Form Get 方法构建 url
【发布时间】:2018-06-23 05:44:51
【问题描述】:

我正在尝试创建一个通过 get 将数据传递到控制器的表单,但 URL 看起来总是这样:

http://example.com/test?_token=VinwWFxKIhKvMqrrEBN5xwXhrmYQjLnOWV8s7dht&param1=horse&param2=cat&param3=dog

但我想要这样的东西:

http://example.com/test/param1=horse/param2=cat/param3=dog

http://example.com/test/horse/cat/dog

路线:

Route::get('test/{param1}/{param2}/{param3}', ['as' => 'test', 'uses' => 'MainController@test']);

HTML:

<form action="{{ route('test') }}" method="get">
            {{ csrf_field() }}
            <div class="col-md-3">
                <div class="form-group">
                    <label for="animal1">animal1</label>
                    <br>
                    <input type="text" name="animal1" class="form-control">
                </div>
            </div>
            <div class="col-md-3">
                <div class="form-group">
                    <label for="animal2">animal2</label>
                    <input type="text" name="animal2" class="form-control">
                </div>
            </div>
            <div class="col-md-3">
                <div class="form-group">
                    <label for="animal3>animal3</label>
                    <input type="text" name="animal3" class="form-control">
                </div>
            </div>
            <div class="col-md-12">
                <button type="submit" class="btn btn-default">Submit</button>
            </div>
</form>

问题是测试路由每 10 秒重新加载一次。因此,表单值必须在 URL 中,以便我可以在控制器中正确处理它们。

我在这里找到了这个问题,但没有太大帮助

How To Pass GET Parameters To Laravel From With GET Method ?

感谢您的帮助!

【问题讨论】:

    标签: php forms laravel get


    【解决方案1】:

    为此,您需要关闭 CSRF 令牌检查,这是一个坏主意。或者你可以使用 JS 来构建查询,这也不是一个好主意。

    处理此问题的最佳方法是使用POST 而不是GET

    <form action="{{ route('test') }}" method="post">
    

    然后将路线改为:

    Route::post('test', ['as' => 'test', 'uses' => 'MainController@test']);
    

    【讨论】:

    • 但是如果我发出一个 post 请求,页面不能每 10 次自动重新加载。 10 秒后,我得到一个“MethodNotAllowedHttpException”
    • 我认为错误是因为如果页面自动重新加载,将不会给出函数期望的数据。
    • @dwdawdawdaw 请描述一下这个每 10 秒刷新一次的事情。
    • 测试函数后调用的视图每 10 秒重新加载一次,头部有这一行: “动物”数据 I之前发送给控制器的实际上是告诉 API 我想要准确拥有哪些数据的设置。
    • @dwdawdawdaw 如果您想每 10 秒向后端发送一些数据,请使用 AJAX 而不是这个。
    【解决方案2】:

    您可以通过 javascript 执行此操作。 您不需要使用这样的表单。您只需通过 id(getElementById) 获取输入值,然后单击按钮,按照您的预期格式化它们 (test/{param1}/{param2}/{param3}) 并重定向到那个页面。

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 2017-04-10
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 2017-08-20
      • 2017-10-05
      相关资源
      最近更新 更多