Могу ли я запустить функцию с аргументом из массива пар ключ-значение в php(Laravel)

#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 в цикле. Но опять же мне нужно присвоить значение в качестве аргумента, используя слушателя.