Blade Component для создания меню или списков - PullRequest
1 голос
/ 04 мая 2020

Я некоторое время искал способ создать компонент, но создать столько слотов, сколько нужно динамически.

Например, вы хотите повторить стиль списка меню в своем проекте несколько раз, лучший вариант - иметь компонент, но что, если мне нужны пользовательские опции html для каждого элемента, это делает его сложным.

1 Ответ

0 голосов
/ 04 мая 2020

Лучший вариант, который я получаю, это следующее, надеюсь, кто-то найдет его полезным

В вашем файле просмотра:

 @component('components.radioList',['values'=>[1,2,3,4],'name'=>'myname'])
    @slot('html_0')
      mi html item 0
    @endslot
    @slot('html_1')
      mi html item 1
    @endslot
    @slot('html_2')
      mi html item 2
    @endslot
    @slot('html_3')
      mi html item 3
    @endslot
  @endcomponent

В блейде вашего компонента:

<ul class="list-group">
    @foreach($values as $value)
        @isset(${"html_{$loop->index}"})
            <li class="list-group-item custom-control custom-checkbox">
                <input type="checkbox" class="custom-control-input" id="customCheck_{{$loop->index}}" name="{{$name}}" value="{{$value}}">
                <label class="custom-control-label" for="customCheck_{{$loop->index}}">
                    {{ ${"html_{$loop->index}"} }} 
                </label>
            </li>
        @endisset
    @endforeach
</ul>

Единственное, что значения и количество слотов должны совпадать.

Если вам не нужны дополнительные значения для каждого слота, вы можете создать как счетчик:

 @component('components.radioList',['count'=>4,'name'=>'myname'])

И измените Foreach на For

Cheers!

...