#php #laravel #laravel-livewire
Вопрос:
У меня не так много опыта в Laravel и PHP, поэтому вопрос может показаться вам ребяческим. Но мне очень жаль, я действительно застрял здесь.
Я могу запустить функцию » showThis()»
Через
protected $listeners = array('customer-list' => 'showThis', 'payments-dash' => 'showThat');
Но мне нужно запустить функцию «showThis($x)» с аргументом типа
protected $listeners = array('customer-list' => 'showThis(cl)', 'payments-dash' => 'showThis(pd)');
Но я получил ошибку :
Не удается вызвать метод компонента. Общедоступный метод [showThis(cl)] не найден в компоненте: [основной корпус]
Пожалуйста, помогите мне с этим. На самом деле, я пытаюсь реализовать панель мониторинга с боковой панелью. Боковая панель имеет опции для вывода() через livewire и запуска функции для визуализации соответствующей части.
Комментарии:
1. Какой именно аргумент вы хотите добавить ? Это значение из http-запроса ? Предмет ? Объект какого класса ? Было бы здорово узнать, чтобы помочь вам
2. Запрос является HTTP-запросом, а аргумент-это просто число или строка, которую я хочу использовать в цикле if для выполнения действия. Функции прекрасно работают без аргумента в нем, т. е. значение в паре будет просто «Показать это». Но если это » showThis ()», то это устраняет ошибку.
Ответ №1:
Просто придерживайтесь своего первого подхода вот так
protected $listeners = array('customer-list' => 'showThis', 'payments-dash' => 'showThat');
но для функции showThis добавьте аргумент,
public function showThis($someArgPassedHere) {/* code that can use passed parameter */}
Конечно, просто передайте аргумент в излучении, как вы обычно это делаете
$emit('customer-list', 12)
Или, если бы у вас было больше аргументов, вы могли бы передать пары имя => значение
$emit('customer-list', ['id' => 12, 'name' => 'someone'])
Комментарии:
1. Спасибо. Миа, но у меня есть аргумент в функции showThis($x), и мне нужно использовать $x в цикле. Но опять же мне нужно присвоить значение в качестве аргумента, используя слушателя.