Совершенно новый для Livewire здесь.
Я столкнулся с чем-то, на что не могу найти ответа, читая документацию и до сих пор используя Google.
Предположим, что у меня есть несколько полей ввода внутри формы, которые имеют настраиваемые атрибуты с присвоенным им значением.
Пример: <input type="text" Wire:model="title" valueid="332">
Поэтому мне нужно не значение ввода, а значение, которое хранится внутри пользовательского атрибута.
В течение долгого времени я использовал ajax-вызовы jQuery и мог просто получить атрибут valueid, отправить его значение «332» внутри ajax-вызова и обработать его дальше внутри моего метода(ов) контроллера. Но я не могу найти, как это сделать с помощью LiveWire.
Может ли кто-нибудь указать мне, как получить эти атрибуты и их значения внутри моего метода(ов) компонента Livewire?
Большое спасибо за вашу помощь!
Редактировать:
Есть 5 полей ввода подряд, и в моей таблице несколько строк. Первый ввод в каждой строке — это не стандартное поле ввода, а настраиваемое поле «выбора» или раскрывающегося списка. Заполнено двумя столбцами: значение, которое видит пользователь, и идентификатор, который это значение имеет в базе данных.
Как только пользователь выбирает значение из раскрывающегося списка, мне нужно получить идентификатор выбранного значения внутри компонента, а не само выбранное значение.
Таким образом, поле выбора имеет несколько значений, и одно из них имеет значение «автомобиль», а соответствующий идентификатор записи БД — 23. Я хочу получить 23 вместо «автомобиль» в своем компоненте для дальнейшей его обработки.
Поскольку существует множество строк с одинаковым настраиваемым полем выбора, я не вижу возможности сохранить идентификатор в переменной. Поэтому вместо этого я использовал jquery ранее, чтобы сохранить его как значение атрибута непосредственно в самом поле выбора.
Надеюсь, теперь стало яснее.
Пожалуйста, приведите конкретный пример
@Qirel: у меня есть специальный выбор, раскрывающийся список. Все выбираемые значения имеют базовый идентификатор (базы данных). Когда пользователь выбирает элемент поля выбора, идентификатор (сейчас) сохраняется, как я уже говорил в своем вопросе: он сохраняет этот идентификатор в настраиваемом теге «valueid», который находится в этом настраиваемом поле выбора. Идентификатор — это то, что нужно моему контроллеру, а не само выбранное значение. Прекрасно работает с jQuery, и я надеялся, что что-то подобное возможно и с LiveWire.
Извините, я говорю о «пользовательском теге», но я, очевидно, имею в виду «атрибут». Посмотрите пример в моем первом посте. Итак, мне нужна помощь: я знаю, как получить значение, введенное в поле ввода, и использовать его в контроллере livewire. Но как я могу получить значение атрибута поля ввода с именем valueid? Итак, в приведенном выше примере я хотел бы получить значение «332» в качестве значения, когда пользователь сохраняет форму. Есть ли способ получить доступ к атрибутам, прикрепленным к полю ввода, и получить их значение в моем контроллере?
Вы можете использовать стандартный селектор jQuery, чтобы получить значение тега, а затем использовать что-нибудь вместе со строками $wire.property = value
. Для этого потребуется общедоступное свойство компонента Livewire, но затем оно будет установлено. Вы также можете использовать @set(property, value)
изнутри компонента. Вам нужно будет иметь возможность запускать событие livewire из выбора при изменении, а затем захватывать его с помощью JS. В качестве альтернативы вы можете просто установить значение правильного идентификатора и прикрепить его к свойству с помощью wire:model
, что, на мой взгляд, является лучшим и менее запутанным решением. Вы можете создать массив правильных значений в компоненте Livewire и использовать лезвие @foreach
для создания параметров с правильным идентификатором и отображаемых значений.
public array $arr = [];
public string $select;
...
public function getValues() {
$models = Table::get();
foreach ($models as $v) {
$this->arr[$v->id] = $v->column;
}
...
<select wire:model>
<option></option>
@foreach ($arr as $k => $v)
<option value = "{{ $k }}">{{ $v }}</option
@endforeach
</select>
Было бы полезно узнать, для чего вы используете это значение - вероятно, это будет другой подход, чем тот, который вы сделали, скажем, с jQuery.