Поддерживается ли объединение нескольких атрибутов в Laravel 7 компонентах? - PullRequest
0 голосов
/ 16 апреля 2020

Я не могу найти никаких ответов, если объединение нескольких атрибутов по умолчанию поддерживается в Laravel 7 блейд-компонентах. Основываясь на документации, можно сделать следующее:

// in blade
<x-alert type="error" :message="$message" class="mt-4"/>

// and in the component
<div {{ $attributes->merge(['class' => 'alert alert-'.$type]) }}>
    {{ $message }}
</div>

// resulting in
<div class="alert alert-error mt-4">
    <!-- Contents of the $message variable -->
</div>

Что если вам нужно / вы хотите, чтобы два разных слияния атрибутов выполнялись в одном и том же анонимном блейд-компоненте? Есть ли способ выполнить слияние $ attribute-> в двух местах одного и того же компонента, не объединяя классы по умолчанию со всеми его тегами HTML? Чтобы проиллюстрировать, используя тот же пример, что и выше, что, если мы хотим добавить значок с его собственными предопределенными классами по умолчанию, которые можно передавать через тег родительского компонента?

// in blade
<x-alert type="error" icon="foobar" :message="$message" class="mt-4"/>

// and in the component
<div {{ $attributes->merge(['class' => 'alert alert-'.$type]) }}>
    <span {{ $attributes->merge(['class' => 'fa fa-'.$icon]) }}> </span>
    {{ $message }}
</div>

// would result in an additional mt-4 on the second span
<div class="alert alert-error mt-4">
    <span class="fa fa-foobar mt-4"> </span>
    <!-- Contents of the $message variable -->
</div>

Два способа, которыми я думал, чтобы сделать это:

Путем разделения диапазона со значком на его собственный анонимный компонент блейда с его собственным вызовом слияния атрибутов. Просто передавая класс и объединяя его в компоненте, и вообще не используя атрибут merge. Знаете ли вы или можете придумать какой-нибудь другой способ очистки?

Заранее спасибо!

...