Laravel select2 在 blade 文件上设置所选选项

Laravel select2 set selected option on blade file

Laravel 8 我正在创建一个 laravel 8 网络应用程序。因此我使用 select2 来创建 multiselect select 字段。使用 select 框来选择值并将它们存储在数据库中就像一个魅力。现在我想创建编辑字段,其中应显示 selected 值。

<option value="123" selected>123</option>

在 blade 文件中不起作用。 你能给我推荐一个使用默认 laravel blade 逻辑的解决方案吗(@foreach,@if,...) 如果这不起作用,那么我需要更多帮助。

谢谢

有很多方法可以做到这一点 让我们从最简单的开始 我假设我们有公司的数组

$companies = ['google', 'facebook', 'amazon'];
$selectedCompany = 1;

1- 你可以 select 等效键

<option value="{{$key}}" {{ ($key === $selectedCompany) ? 'selected' : '' }}>{{$value}}</option>

2-您可以使用组件来构建选项组件 https://laravel.com/docs/8.x/blade#components

来自 CLI 运行

php artisan make:component Forms/Select/Option

laravel 将创建两个文件,一个用于视图代码,另一个用于逻辑

resources/views/components/forms/select/option.blade.php
app/View/Components/Forms/Select/Option.php

创建三个属性 $key、$value 和 $selectedKey

<?php

namespace App\View\Components\Forms\Select;

use Illuminate\View\Component;

class Option extends Component
{
    public $value;

    public $key;

    public $selectedKey;
    /**
     * Create a new component instance.
     *
     * @return void
     */
    public function __construct($key, $value, $selectedKey)
    {
        $this->key = $key;
        $this->value = $value;
        $this->selectedKey = $selectedKey;
    }

    /**
     * Get the view / contents that represent the component.
     *
     * @return \Illuminate\Contracts\View\View|\Closure|string
     */
    public function render()
    {
        return view('components.forms.select.option');
    }
}

option.blade.php内容

<option value="{{$key}}" {{ $key === $selectedKey ? 'selected' : '' }}>{{$value}}</option>

现在您可以在任何地方调用此组件并向其传递属性

<x-forms.select.option :value="$value" :key="$key" :selectedKey="$selectedCompany"> </x-forms.select.option>

3- 你可以使用 laravelcollective/htmlhttps://laravelcollective.com/docs/6.x/html#drop-down-lists

形成 CLI 运行

composer require laravelcollective/html

现在您可以在任何 blade 视图文件中使用 Form::select

{{ Form::select('company_id', $companies, $selectedCompany) }}

希望对您有所帮助