【问题标题】:Append form action with input variable使用输入变量附加表单操作
【发布时间】:2016-08-29 07:28:53
【问题描述】:

我有一个表单,其动作是

<form action="/food/vegetable" method="POST" >

我的控制器方法以蔬菜名称为参数

我想将输入的蔬菜名称附加到操作中。 例如

<form action="/food/vegetable/{vegetableName}" method="POST" >

可以这样做吗?或者,还有更好的方法 ?请指导。

【问题讨论】:

  • 当然可以。不过建议您查看Laravel Documentation中的“命名路线”
  • 强烈推荐命名路由。这给路由模式增加了一层抽象,所以如果你改变它的端点,你只需要改变一个地方。

标签: php forms laravel laravel-5


【解决方案1】:

因为您使用 POST 方法发送数据,所以将此隐藏字段放入您的表单中:

<input type="hidden" name="vegetableName" value="{{ $vegetableName }}">

然后你可以在控制器中获取这些数据:

$vegetableName = $request->vegetableName;

【讨论】:

    【解决方案2】:

    你可以使用jquery提交事件。

    $('form').submit(function(e){
      e.preventDefault();
      var veg = $("#INPUTBOX_ID").val();
      location.href = "/food/vegetable"+veg;
    

    });

    您可以根据需要处理 veg 的值。

    【讨论】:

      【解决方案3】:

      给你的表单一个 ID,然后你可以在 JS 中编写下面的代码。

      如果您在表单的 url 中收到蔬菜参数作为参数(例如 path/to/form?vegetable=carrot),您可以使用以下函数获取参数的名称

      function getParameterByName(name) {
        url = window.location.href;
        name = name.replace(/[\[\]]/g, "\\$&");
        var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
            results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, " "));
      }
      var vegetable = getParameterByName("vegetable");
      document.getElementById("myForm").action = "/food/vegetable/"+vegetable;
      <form id="myForm" action="/food/vegetable/{vegetableName}" method="POST" >
      </form>

      【讨论】:

        猜你喜欢
        • 2016-03-11
        • 1970-01-01
        • 2013-05-11
        • 1970-01-01
        • 1970-01-01
        • 2018-11-21
        • 1970-01-01
        • 2017-07-01
        相关资源
        最近更新 更多