提交laravel后复选框保持选中状态

时间:2017-11-02 03:52:17

标签: checkbox laravel-5.3

我有这个简单的复选框。

我的问题是,如果我选中任何一个复选框,它应在表单提交后保持检查状态。

<label>                                                                
    <input type="checkbox" name="services_offered[]" value="water jet cutting"> Water Jet Cutting</label>
<label>                                                                
    <input type="checkbox" name="services_offered[]" value="plasma cutting"> Plasma Cutting</label>
<label>                                                                
    <input type="checkbox" name="services_offered[]" value="CNC router cutting"> CNC Router Cutting</label>

我之前尝试过使用我的代码,但没有运气,

<?php 
function isChecked($value)
{
    return (!empty($_REQUEST['services_offered']) && in_array($value,$_REQUEST['services_offered']));
}

    <label><input type="checkbox" name="services_offered[]" value="water jet cutting" <?php if(isChecked('water jet cutting')) echo ' checked' ?>> Water Jet Cutting</label>

    <label><input type="checkbox" name="services_offered[]" value="plasma cutting" <?php if(isChecked('plasma cutting')) echo ' checked' ?> > Plasma Cutting</label>

    <label><input type="checkbox" name="services_offered[]" value="CNC router cutting" <?php if(isChecked('CNC router cutting')) echo ' checked' ?>> CNC Router Cutting</label>

我希望它以“laravel方式”转换,但我不知道如何。

希望你理解我。

感谢。

3 个答案:

答案 0 :(得分:2)

我不知道我是否理解你的意思,但是:

表单不会发布复选框的值。 因此,我将隐藏的输入与每个复选框相关联,并使用javascript维护这些值:

 $("#services_offered").change(function() {
        if(this.checked) {
            $('#services_offeredHidden').attr('value','1');
        }
        else {
            $('#services_offeredHidden').attr('value','0');
        }
    });

在laravel控制器中,我只使用隐藏的输入,我从Request $请求中获取。 当您从控制器返回视图时,您确实喜欢这个

return view('nameOfView')->with('checkbox',$checkboxValue);

在刀片中,您可以使用以下方法访问该值:

 {{$checkbox}}

希望它有所帮助!

答案 1 :(得分:2)

如果您想要“Laravel方式”做事,那么我建议您查看HTML package by Laravel Collective以便在视图中标记HTML表单。还要确保控制器上的方法接收Request作为参数,甚至可以结帐Laravel's built-in Form Request Validation

请注意,您当前的代码非常老式,所以可能需要一段时间来学习如何以现代方式做事,但坚持下去并且您将获得奖励。

在您看来,您将打开这样的表单:

{!! Form::open(['url' => 'foo/bar']) !!}
//
{!! Form::close() !!}

接收表单的控制器上的方法如下所示:

public function store(Request $request)
{
    $name = $request->input('name');

    //
}

但总的来说,因为你的问题太宽泛而无法在没有基本上为你编写代码的情况下清楚地回答,你需要开始做一些教程来正确学习Laravel。我推荐Jeff Way的Laracasts视频教程。

答案 2 :(得分:0)

我遇到了类似的问题-这是我的解决方法:

我的刀片模板将复选框列表呈现为html:

import csv
from BeautifulSoup import BeautifulSoup
from requests import Session
import requests


url = "https://ncrdb.usga.org/NCRDB/NCRListing.aspx"
data = {'txtClubCity': r"Newton"}
r = requests.post(url, data=data)

print r.content

我想a)将它们全部默认为选中;和b)在两次验证之间保留其选中/未选中状态。

关键是使用laravel辅助函数old()-并实现old()函数返回数组-因此您需要执行in_array(value,old())。您还需要通过检查是否为old()== null来覆盖old()在首次加载时为空的情况:

这是我以前用来做的刀片模板片段:

<label for="sId1"><input type='checkbox' name='sIds[]' id="sId1" value="1"  checked >Draft</label>
<label for="sId2"><input type='checkbox' name='sIds[]' id="sId2" value="2"  checked >Submitted</label>

其中有一个错误-如果清除所有复选框,则在验证时,所有复选框均会重新加载复选框。这对我的情况很好,因此我尚未解决。让我知道您是否解决了该错误!