#laravel #laravel-blade #laravel-8 #laravel-components
Вопрос:
Я бросил вызов общему input
компоненту в Laravel, подобному этому:
//file: views/components/input.balde.php
<input @foreach ($attrs as $attr=>$val)
{{ $attr }} = "{{ $val }}"
@endforeach
>
И я хотел бы использовать его следующим образом в шаблонах лезвий:
<x-input :attrs="{{ ['type'=>'text', 'placeholder'=>"Search.."] }}" ></x-input>
дело в том, что когда я передаю объект массива, подобный приведенному выше примеру, он, кажется, нарушает представление, однако, когда я отправляю переменную, подобную этой:
@php
$attributesArray = ['type'=>'text', 'placeholder'=>"Search.."];
@endphp
<x-input :attrs="$attributesArray" ></x-input>
Есть ли способ передать массив как есть без необходимости создавать переменную и отправлять ее, чтобы я не добавлял ненужную директиву @php?
Ответ №1:
Привет, если я правильно понимаю, вы хотите получить любые значения массива в строке, вы просто можете это сделать, но с помощью implode.
<x-input :attrs="{{ implode($attributesArray , " ") }}" ></x-input>
и переменная $attributesArray-это просто переменная, которая будет отправлена в блейд, это массив значений ключей
Комментарии:
1. Интересно, однако, почему я могу отправить переменную в качестве переменной в компоненте, но не отправить массив в качестве переменной таким же образом? И в чем разница между отправкой имени массива в качестве переменной и отправкой массива напрямую?
Ответ №2:
Попробуй это
<x-input :attrs="{!! [ 'type' => 'text', 'placeholder' => 'Search...' ] !!}" />
Комментарии:
1. к сожалению, это приводит к ошибке:
syntax error, unexpected '<'