Laravel Form ::选择

问题描述 投票:0回答:3

我使用下拉菜单选择网站为:

{{ Form::select('site', $sites, null, ['class' => 'form-control', 'placeholder' => 'Select a Site']) }}
{{ Form::label('site','site*') }}

我将所选站点作为site_id存储在数据库中。由于这会从列表中返回所选项目的索引,因此如果选择了第一项,则site_id将在数据库中存储为0。

这里的问题是,site_id是我的数据库中的foreign_key,这会导致错误,同时将它与column:id表的sites匹配。由laravel迁移脚手架产生的id柱从1开始,site_id返回的Form::select从0开始。

无论如何,从Form::select返回的索引将从1开始?

或者还有其他方法可以解决问题吗?

forms laravel select drop-down-menu
3个回答
0
投票

当您从数据库获取站点时,请保留原始ID以解决问题:

$sites = Site::pluck('name', 'id');

此代码将生成具有实际ID的站点名称列表:

[1 => 'Site name 1', 2 => 'Site name 2']

0
投票

你有很多解决方案

首先,只需验证验证,自控制器以来,站点不能为0

use Illuminate\Validation\Rule;

/** ... */
$this->validate($request, [
   'site'=>['required',Rule::notIn([0])]
])

您还可以查看保存位置的站点模型:

DB::transaction(function() use($request){
     /** mapping of site attribute */
     if($site->save())
     {

     }
}

您也可以通过JavaScript检查客户端

{{ Form::select('site', $sites, null, ['id'=>'sites', 'class' => 'form-control', 'placeholder' => 'Select a Site']) }}
{{ Form::label('site','site*') }}


$("form input['type=submit']").click(function(e){
     e.preventDefault();
     if($('#sites').val() == 0)
     {
        alert('Please, select a site');
        return;
     }else{
         $(this).submit();
     }
})

0
投票

如果你想插入没有id的名字你可以使用$ sites = Site :: pluck('name','name');我希望这会奏效。

© www.soinside.com 2019 - 2024. All rights reserved.