#php #laravel #laravel-5.8 #laravel-events
Вопрос:
Я использую Laravel 5.8, и я создал событие под названием UserWalletNewTransaction
, которое выглядит следующим образом:
public $transaction;
public $added_type;
public function __construct($transaction, $added_type)
{
$this->transaction = $transaction;
$this->added_type = $added_type;
}
Как вы можете видеть, я указал здесь два параметра, и эти параметры получают свое значение от контроллера:
event(new UserWalletNewTransaction($newTransaction, $value_added_type));
И тогда Слушатель, которого зовут UserWalletNotification
, говорит так:
public function handle(UserWalletNewTransaction $event, $added_type) {
Но здесь что-то не так, так как я получаю эту ошибку:
Слишком мало аргументов для функции AppListenersUserWalletNotification::handle(), 1 передан и ровно 2 ожидаемых
Итак, как решить эту проблему? Как я могу правильно передать два параметра событию и слушателю?
Обновление 1
Снимок экрана с Ошибкой:
Ответ №1:
Событие UserWalletNewTransaction:
public $transaction;
public $added_type;
public function __construct($transaction, $added_type)
{
$this->transaction = $transaction;
$this->added_type = $added_type;
}
который вы можете назвать так event(new UserWalletNewTransaction($newTransaction, $value_added_type));
и прослушиватель UserWalletNotification:
public function handle(UserWalletNewTransaction $event)
{
$transaction = $event->transaction;
$added_type = $event->added_type;
}
Ответ №2:
Вы можете использовать массив.
event(new UserWalletNewTransaction([ 'transaction' => $newTransaction, 'added_type' => $value_added_type));
public $transaction;
public $added_type;
public function __construct($data)
{
$this->transaction = $data['transaction'];
$this->added_type = $data['added_type'];
}
ОБНОВЛЕНИЕ № 1:
Вы должны удалить 2-й аргумент функции дескриптора. Вы можете получить доступ added_type
к данным в $event
переменной.
Комментарии:
1. Еще раз
Too few arguments to function AppListenersUserWalletNotification::handle(), 1 passed and exactly 2 expected
!! Что-то не так соpublic function handle(UserWalletNewTransaction $event, $added_type) {
Слушателем2. Возможно, вам придется опубликовать код функции обработки.
3. Там пусто. Я только что добавил ОБНОВЛЕНИЕ № 1 к вопросу.