2017-10-15 65 views
1

我试图让一个表格中的multiselect工作,我使用laravel,我传递给我的视图变量名为相关,一个ID数组,引用相关选择的模式模型,这里就是我做的对抗代码:Laravel刀片形状Multiselect选择使用阵列不工作

@foreach($categories as $category) 

       @foreach($correlated as $c) 
       @if($c === $brand_id) 
       @php($selected = "selected") 
       @endif 
       @endforeach 
       <option class="text-center" value="{{ $category->id }}" selected="{{ $selected }}">{{ ucfirst($category->name) }}</option> 
       @endforeach 

我检查都brand_id和$ C值,他们是正确的。有任何想法吗?


编辑:修正,似乎是最正确的,这样,仍然没有工作...

@php $selected = "" @endphp 
      <select multiple name="categoriesField[]" class="form-control" size="{{ count($categories) }}"> 
       @foreach($categories as $category) 
       @php $selected = '' @endphp 
       @if(in_array($category->id, $correlated)) 
       @php $selected = 'selected' @endphp 
       @endif    
       <option class="text-center" value="{{ $category->id }}" @php echo $selected @endphp>{{ ucfirst($category->name) }}</option> 
       @endforeach 
      </select> 

编辑2:与上面的代码解决了,我的浏览器表现得莫名其妙的错误,没不要显示选定的选项,我想查看唯一的答案。

回答

1

您可以在一个变量

@php $brandIds = collect($correlated)->toArray() @endphp 

试试这个

<select>标签存储件之前的品牌IDS里面你<select>标记检查,如果你$brand_id变量的值是使用PHP in_arrya()$brandIds阵列内功能,然后选择该选项。

@foreach($categories as $category) 
    <option class="text-center" value="{{ $category->id }}" @if(in_array($brand_id, $brandIds)) selected @endif>{{ ucfirst($category->name) }}</option> 
@endforeach 

希望这会为你工作:)

+0

我需要面对$相关(一组ID)和$类别 - > id,这将不是一个数组(和containes的ID来检查激活所以我不能使用in_array – K3nzie

+0

'in_array()'函数将第一个参数作为一个字符串和第二个数组,因此您可以使用它,第一个参数作为'$ category-> id'和秒参数作为'$ correlated'我存储在'$ brandIds'中,所以你可以使用'$ branchIds'作为in_array()函数的第二参数 – Vikash

+1

是的,现在我知道了,事实上它确实工作 – K3nzie