2015-08-17 2 views
0

Я создал событие класс обработчика вПередача переменной массива из событий класса обработчика контроллера в Laravel

App\Events\Roomallocwithproperties(Event file) 
    App\Handlers\Events\Allocofroomprop(Handler file) 

В Laravel 5, я Прошёл две переменные из контроллера и получить эту переменную с помощью конструктора внутри файла событий, в

public function__construct($a,$b) { 
     $this->a=$a; 
     $this->b=$b; 
         } 

Это значение I доступ в хендлер внутри функции HANDL, такие как

public function handle(Roomallocwithproperties $event) 
{ 
$c= $event->a + $event->b; 

return $c; 
} 

В файле провайдера Организация мероприятий

protected $listen = [ 
    'event.name' => [ 
     'EventListener', 
    ], 
    'App\Events\Roomallocwithproperties'=>[ 
     'App\Handlers\Events\Allocofroomprop', 

     ], 
]; 

И я сгореть событий от контроллера, такие как

 $result= Event::fire(new Roomallocwithproperties($val1,$val2)); 

     dd($result); 

Моя проблема в том, что я хочу, чтобы вернуть значение $ C снова мой контроллер. Причина, по которой я использую событие: я уволил событие из foreach на каждую итерацию, и снова вернул значение внутри него. Как вернуть переменную $ c в функцию контроллера, Как получить значение внутри этой функции контроллера!
Спасибо за все ответы!

+0

Зачем вы хотите передать его контроллеру? Никакие события для запуска кода не должны заботиться о слушателях, которые слушают эти события. –

+0

В моей функции контроллера внутри foreachloop, если условие проверено, если это условие истинно, событие запускается и из этого значения массива событий собираются, это значение я хочу внутри исполняемого foreach в той же итерации! Поэтому я использую события для стрельбы! Спасибо за ответ –

ответ

0

Вам не нужен доступ к слушателям. Вам нужны ответы от слушателей.

Событие :: огонь() метод возвращает массив ответов слушателей. Таким образом, любой возвращаемый метод получателя () будет в этом массиве. Поэтому ваши слушатели должны просто вернуть все, что вы хотите собрать, из метода дескриптора ().

+0

Извините, я не понимаю. Если Listener должен предоставить любую обратную связь, тогда он должен сделать это, возвращая значение из метода handle. Если вы разместите свой код или объясните, чего вы действительно хотите достичь, я, возможно, смогу помочь, но на данный момент я не знаю, что вам нужно. –

+0

В провайдере вы просто перечисляете слушателей для разных событий. Вам нужно вернуть значение из метода дескриптора слушателя. "return $ event-> a + $ event-> b;" а затем dd() результаты метода Event :: fire() в вашем контроллере, и вы должны увидеть возвращаемые данные –

+0

Но что не работает? Вызываются ли прослушиватели событий? Что вы получаете от огня()? –

Смежные вопросы