【问题标题】:Trying to get value of checkbox from form to controller试图从表单获取复选框的值到控制器
【发布时间】:2019-04-27 00:13:03
【问题描述】:

当我选中复选框控件时,我正在尝试做一些允许我上传照片的事情。我让客户端正常工作,以便在选中复选框时显示上传控件并且表单验证正确。

但是,在我的控制器中,如果我的复选框被选中(真)调用某个方法,我需要采取一些措施。如果未选中 (false),我将执行其他操作。

在我的 html 页面中,我有以下内容:

<form action="/supplier/submit/plan" method="post" role="form" id="plan-form">
...   
   <input name="checkingPhotos" type="checkbox" id="chkPhotos" />
   <label for="chkPhotos">I want to include photos in this plan.</label>
...
</form>

但是,在我的控制器中,我现在只想看看我的复选框中是否得到了正确的值。为此,我做了一些简单的事情:

 public function submitPlan(Request $request)
    {
        $checkboxValue = $request->input('checkingPhotos');
        dd($checkboxValue);
    }

无论我是否选中复选框,结果都是打印null。我的路线也是这样的:

Route::post('/submit/plan', 'SupplierController@submitPlan');

有人可以告诉我我在这里做错了什么吗?我只想在我的控制器方法中查看值 1 / True 或 0 / False。

【问题讨论】:

    标签: php laravel model-view-controller


    【解决方案1】:

    价值

    真正的问题是您的复选框没有值。添加一个值,您的问题就解决了。应该是:

    <input name="checkingPhotos" type="checkbox" id="chkPhotos" value="1" />
    

    [] 创建一个数组

    Dylan Kas 提交的关于更改名称以添加[] 的答案有效,但不是出于您认为的原因。一起来看看吧:

    <input name="checkingPhotos[]" type="checkbox" id="chkPhotos" />
    

    会传入post字符串:

     checkingPhotos[]=On
    

    其中,在 PHP will automatically be turned into an array.

    参考框架挑战

    为什么首先要有一个复选框?需要复选框吗?为什么不只检查文件是否存在。

    $validated = $request->validate([
        //... other fields here.
        'image' => 'mime:png,gif,jpeg|max:10000' //set max to file size limit you want
    ]);
    $plan = new SupplierPlan($validated);
    if($request->has('image')){
       $plan->image = $request->image->store();
    }
    $plan->save();
    // ... flash message, return view or redirect
    

    【讨论】:

      【解决方案2】:

      如果是复选框,则应将输入的名称修改为

      <input name="checkingPhotos[]" type="checkbox" id="chkPhotos" />
      

      那么你应该能够得到你想要的价值

      $request->input('checkingPhotos');
      

      【讨论】:

      • 感谢您的成功。当复选框未被选中时,它返回 null,当它被选中时,它返回“On”。这正常吗?
      【解决方案3】:

      看来你的问题出在你的路线上,改成

      Route::post('/supplier/submit/plan', 'SupplierController@submitPlan');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 2018-07-12
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多