在Laravel 5.0中无法获得多个选择输入值

问题描述:

我想要保存公司的电话。我在表单中使用多个选择来列出电话。在Laravel 5.0中无法获得多个选择输入值

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

这是我的形式(add_company.blade.php)的一部分:

{!! Form::model($company = new App\Models\Setting\Organization\Company, ['method' => 'POST', 'action' => 'Setting\Organization\[email protected]', '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() !!} 

这里是我的jQuery来在选择输入添加<option>

$('#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(); 
}); 

下面是本公司对型号的手机关系(应用程序\型号\设置\组织\ Company.php):

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

手机属性在公司型号:

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

而在手机模型(应用程序\型号\设置\组织\ Phone.php):

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

该店方法设置\组织\ CompaniesController:

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->input('Phones'));,什么都不会被保存到数据库中。

请帮忙,谢谢。

对于多选择你应该通过选定的值,作为你的每个代码,我的理解是,你在ddPhone中追加选项,但你并没有让他们被选中。所以试试这个。

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

它的工作!但是如果我想在选择框中添加所有内容,即使该项目未被选中,该怎么办? –

+0

您可以添加项目,但直到除非您将它们标记为选定项目,否则您将不会获取DropDown值,因为表单仅发布选定的值。 你想要做什么,意味着你的要求? – Qazi

+0

实际上,我只想将电话选择框中的所有内容都插入到数据库中。在提交表单之前没有选择每个项目,有没有办法做到这一点? –