laravel 8 x-components 在刀片中

laravel 8 x-components in blades

我无法理解 x-blades 在 laravel 中的工作方式。

例子

我创建了自定义 textarea 组件,但无法从 blade.

获取 rowscols 的值

逻辑

如果 blade 提供 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=""

有什么想法吗?

已解决

我是这样做的:

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">,它会使用组件中的静态值,否则它会使用我的刀片值。