2015-08-17 48 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; 
} 

在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返回給控制器函數,如何接收該控制器函數中的值!
感謝您的回覆!

+0

你爲什麼要把它傳遞給控制器​​?沒有代碼觸發事件應該關心偵聽這些事件的偵聽器。 –

+0

在我的控制器函數中,如果檢查條件,在foreachloop中,如果條件爲真,則觸發事件,並從該事件中獲取數組值,在同一迭代中,我希望在執行的foreach內創建該值!所以我用事件開火!謝謝你的回覆 –

回答

0

您需要的不是對偵聽器的訪問。你需要的是聽衆的迴應。

Event :: fire()方法返回偵聽器響應的數組。所以無論聽衆的句柄()返回的方法將在該數組中。因此,您的聽衆需要從句柄()方法中返回想要收集的任何內容。

+0

對不起,我不明白。如果Listener提供任何形式的反饋,則需要通過返回句柄方法的值來完成。如果你發佈你的代碼或解釋你真正想達到的目標,我可能會提供幫助,但目前我不知道你需要什麼。 –

+0

在提供者中,您只需列出不同事件的偵聽器。您需要從偵聽器的句柄方法返回值。 「return $ event-> a + $ event-> b;」然後dd()在你的控制器中的Event :: fire()方法的結果,你應該會看到返回的數據 –

+0

但什麼不起作用?事件監聽器是否被調用?你從火()返回什麼? –