laravel 8 x-компоненты в блейдах

#php #laravel #laravel-blade

#php #laravel #laravel-блейд

Вопрос:

Я не могу понять, как работают x-блейды в laravel.

Пример

Я создал пользовательский textarea компонент, но не могу получить значения rows и cols из блейда.

Логические

Если блейд предоставляет rows и cols использует это, если не использовать статические.

Код

textarea.blade.php

 @props(['disabled' => false, 'rows' => '4', 'cols' => '50'])

<textarea {{ $disabled ? 'disabled' : '' }} rows="{{ $rows ? $slot : $rows }}" cols="{{ $cols }}" {!! $attributes->merge(['class' => 'form-input rounded-md shadow-sm']) !!}></textarea>
  

myform.blade.php

 <x-textarea class="block mt-1 w-full" name="address" rows="10" cols="3" />
  

Результаты тестирования

cols="{{ $cols }}" возврат статического значения 50 из компонента

rows="{{ $rows ? $slot : $rows }}" возврат rows=""

есть идеи?

Комментарии:

1. Троичный $rows ? $slot : $rows вид выглядит неправильно. В нем говорится «если $rows верно, то $slots иначе $rows «, но в части «иначе $rows » всегда ложно

2. @apokryfos пожалуйста, поделитесь своими идеями

3. как насчет $rows ?: $slot ?

4. @apokryfos, который просто получает статические из компонента

5. @apokryfos пожалуйста, имейте в виду, что я должен использовать 2 $slot один на rows один для cols

Ответ №1:

Решаемая

Вот как я это сделал:

component

 @props(['disabled' => false, 'rows'=>'4', 'cols'=>'50'])

<textarea {{ $disabled ? 'disabled' : '' }} rows="{{ $rows }}" cols="{{ $cols }}" {!! $attributes->merge(['class' => 'form-input rounded-md shadow-sm']) !!}></textarea>
  

blade

 <x-textarea class="block mt-1 w-full" name="address" required :value="old('address')" >
  <x-slot name="cols">3</x-slot>
  <x-slot name="rows">10</x-slot>
</x-textarea>
  

Теперь, если я удаляю <x-slot name="cols"> , и <x-slot name="rows"> он использует статические значения из компонента, если нет, он использует мои значения блейдов.