将数组变量从事件处理程序类传递到laravel

时间:2015-08-17 14:25:40

标签: php laravel event-handling laravel-5 listener

我在

中创建了事件处理程序类
   App\Events\Roomallocwithproperties(Event file)
   App\Handlers\Events\Allocofroomprop(Handler file)

在laravel 5中,我从Controller传递了两个变量,并在Event文件中使用构造函数获取该变量,如

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

我在Handl函数中访问的这个值在handl函数中,如

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

 return $c;
 }

在Eventservice提供程序文件中

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

        ],
];

我从控制器发出事件,例如

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

       dd($result);

我的问题是我想再次将值$ c返回给我的控制器。我使用事件的原因是我每次迭代都会从foreach中触发事件,并再次返回其中的值。 如何将变量$ c返回到控制器函数,如何在控制器函数内接收值!
感谢所有回复!

1 个答案:

答案 0 :(得分:0)

您需要的不是对听众的访问。你需要的是听众的回应。

Event :: fire()方法返回侦听器响应数组。所以无论听众的 handle()方法返回的是该数组。因此,您的听众只需从 handle()方法返回您想要收集的内容。