【问题标题】:Can't Get Multiple Select Input Value in Laravel 5.0在 Laravel 5.0 中无法获取多选输入值
【发布时间】:2016-05-10 23:49:40
【问题描述】:

我想保存公司的电话。我在表单中使用多项选择来列出电话。

我正在尝试从多选中获取输入值,但 dd($request->input('Phones')); 总是返回 null

这是我的表单的一部分 (add_company.blade.php):

{!! Form::model($company = new App\Models\Setting\Organization\Company, ['method' => 'POST', 'action' => 'Setting\Organization\CompaniesController@store', 'files'=>true]) !!}

<div class="form-group">
    <!-- Form::label parameters : LabelFor, Text -->
    {!! Form::label('NewPhone', 'Telephones : ', ['class' => 'col-lg-3 col-md-3 col-sm-3 col-xs-3']) !!}

    <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
        {!! Form::text('NewPhone', null, ['class' => 'form-control', 'id' => 'txtNewPhone']) !!}
    </div>

    <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1">
        {!! Form::button('', ['class' => 'form-control btn btn-info fa fa-plus', 'id' => 'btnAddPhone']) !!}
    </div>

</div>

<div class="form-group">
    <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3"></div>

    <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
        {!! Form::select('Phones[]', $phones, null, ['class' => 'form-control', 'multiple' => true, 'id' => 'ddPhone']) !!}
    </div>

    <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1">
        {!! Form::button('', ['class' => 'form-control btn btn-danger fa fa-minus', 'id' => 'btnDelPhone']) !!}
    </div>

</div>

<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
    {!! Form::submit('Add Company', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}

这是我在选择输入中添加 &lt;option&gt; 的 JQuery:

$('#btnAddPhone').on('click', function(){
    var newPhone = $('#txtNewPhone').val();
    if($("#ddPhone option[value='" + newPhone + "']").length == 0){
        $('#ddPhone').append($('<option>', {
            value: newPhone,
            text: newPhone
        }));
    }
});

$('#btnDelPhone').on('click', function(){
    var selected = $("#ddPhone option:selected").text();
    $("#ddPhone option[value='" + selected + "']").remove();
});

.

.

这是公司模型 (App\Models\Setting\Organization\Company.php) 中的电话关系:

public function phones(){
    return $this->hasMany('App\Models\Setting\Organization\Phone', 'OwnerID', 'CompanyCode');
}

公司模型中的电话属性:

public function getPhonesAttribute(){
    return $this->phones()->lists('PhoneNumber');
}

.

.

在电话模型中(App\Models\Setting\Organization\Phone.php):

protected $fillable = ['OwnerID', 'PhoneNumber'];
public function company(){
    return $this->belongsTo('App\Models\Setting\Organization\CompanyCode', 'CompanyCode');
}

.

.

Setting\Organization\CompaniesController 中的 store 方法:

public function store(CompanyRequest $request){
    $phones = $request->input('Phones');
    dd($request->input('Phones'));
    if(count($phones) > 0){
        foreach($phones as $phone){
            Phone::create(['OwnerID' => $request->CompanyCode, 'PhoneNumber' => $phone]);
        }
    }
    flash()->success('Company ' . $request->Name . ' Added.');
    return redirect('company');

}

如果我删除dd($request-&gt;input('Phones'));,则不会将任何内容保存到数据库中。

请帮忙,谢谢。

【问题讨论】:

    标签: php laravel laravel-5 multiple-select laravel-form


    【解决方案1】:

    对于多选,您应该传递 Selected 值,作为您的每个代码,我的理解是,您在 ddPhone 中附加选项,但您没有使它们成为 Selected。所以试试这个。

    $('#btnAddPhone').on('click', function(){
        var newPhone = $('#txtNewPhone').val();
        if($("#ddPhone option[value='" + newPhone + "']").length == 0){
            $('#ddPhone').append($('<option>', {
                value: newPhone,
                text: newPhone,
                selected: true
            }));
        }
    });
    

    【讨论】:

    • 成功了!但是,如果我想在选择框中添加所有内容,即使该项目没有被选中怎么办?
    • 您可以添加该项目,但除非您将它们标记为选中,否则您不会获得 DropDown 值,因为表单仅发布选定的值。你想做什么,就意味着你的要求?
    • 其实我只是想把Phones选择框里的所有东西都插入到数据库中。有没有什么办法可以在提交表单之前不选择所有项目?
    • 你的问题还不清楚,请详细说明
    猜你喜欢
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2023-03-19
    相关资源
    最近更新 更多