【问题标题】:Getting value of a submit button in Laravel 5.3在 Laravel 5.3 中获取提交按钮的值
【发布时间】:2017-07-17 17:18:03
【问题描述】:

我的页面上有一个表格

 <form method="post" action="{{url('/vpage')}}"> 
 <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <div class="w100">
        <button name="hostel1" class="submitBTN addnowBtn" type="submit" value="The Venetian"> Add Now</button>
    </div><!--w100-->
 </form>

我在我的控制器中打印了请求,例如

    public function vegaspage(Request $request){
    dd($request);
    die;
   } 

我的页面上也有很多字段,当请求参数进入浏览器时,提交按钮值没有出现在请求中 有什么想法吗?

【问题讨论】:

  • dd 后不需要使用 die :)
  • 也许您在提交时禁用了带有 JS 的按钮以防止多次提交?在这种情况下,按钮值不会出现在$_POST$request

标签: php laravel


【解决方案1】:

在你的控制器函数中试试这个:

Input::get('hostel1', 'NA');

// It will return its value ie `The Venetian` otherwise `NA`

注意:Input::get()的第二个参数为默认值。

【讨论】:

  • 输入为 null :( @mayank
【解决方案2】:

$request->hostel1

当你想dd()你的输入参数时,做

dd($request->all());

【讨论】:

    【解决方案3】:

    关注link

    只有一个输入值得到关注

    $name = $request->input('name');
    

    检索所有输入数据

    $input = $request->all();
    

    【讨论】:

      【解决方案4】:

      注意:最简单的调试方法是通过谷歌浏览器中的网络选项卡。可以看到头部响应数据。

      但这不起作用的原因可能是因为您正在执行 POST Request 。如果您执行 GET 请求,您将获得按钮的值。

      另一个原因可能是您正在通过 javascript 提交并执行 e.preventDefault() 在这种情况下您并没有真正发送请求。所以 PHP 没有得到值。

      【讨论】:

      • +1。您关于 javascript 提交的建议使我朝着正确的方向前进。在我的情况下,我的同事试图多次阻止表单提交,编写了如下代码:jQuery('form').one(function(){...}),这也从请求中删除了button 值。
      【解决方案5】:

      将按钮代码更改为:

      <input name="hostel1" value="The Venetian" type="hidden">
      <button class="submitBTN addnowBtn" type="submit"> Add Now</button>
      

      在控制器中,使用这个来获取值:

      $request->hostel1
      

      【讨论】:

      • 如果我的表单中有多个按钮,这个隐藏字段每次都会保持不变
      • @Learner 不工作是什么意思?它肯定会将值传递给控制器​​,如果你没有做错什么,如果你需要帮助,请显示整个代码。如果您有多个按钮/表单,那根本不是问题,因为您只会获得提交表单内元素的值。
      【解决方案6】:

      通过使用请求命名空间,您可以获得任何输入参数的值,对于提交按钮也是如此。

      为此,您必须在控制器中包含请求,例如:

      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class UserController extends Controller
      {
          /**
           * Store a new user.
           *
           * @param  Request  $request
           * @return Response
           */
          public function store(Request $request)
          {
              $name = $request->input('name');
      
              //IN your problem you can submit button value as
              $submit_button = $request->input('hostel1');      
      
          }
      }
      

      有关请求的更多详细信息,您可以关注:

      https://laravel.com/docs/5.3/requests

      谢谢

      【讨论】:

        【解决方案7】:

        我意识到,每当我尝试为“提交”按钮设置名称和值时,laravel 都不会检索请求中的值。所以你可能想使用这样的隐藏字段:

         <input type="hidden" name="hostel1" value="hostel1">
        

        并像这样在服务器端检索它:

        $request->hostel1;
        

        【讨论】:

          猜你喜欢
          • 2013-04-26
          • 1970-01-01
          • 2015-09-27
          • 2019-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多