#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">
он использует статические значения из компонента, если нет, он использует мои значения блейдов.