2016-11-27 86 views
2

我試圖創建工作來註冊用戶,並試圖按照Jeffrey的視頻,但看起來像dispatchfrom由於某種原因被刪除。這就是我想現在要做的:試圖在Job Laravel中獲取非對象的屬性

這是我的控制器:

public function PostSignUp(Request $request) 
{ 

    dispatch(new RegisterUser($request->all())); 
    return 'done'; 

} 

這是我的工作:

namespace App\Jobs; 

use Illuminate\Bus\Queueable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 

class RegisterUser implements ShouldQueue 
{ 
    use InteractsWithQueue, Queueable, SerializesModels; 

    protected $request; 

    /** 
    * Create a new job instance. 
    * @param $request 
    * @return void 
    */ 
    public function __construct($request) 
    { 
     $this->request = $request; 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 
     $email = $this->request->email; 
     var_dump('I should register user with email:' . $email); 
    } 
} 

我也試圖把

只是$request而不是$request->all()

但後來我得到

Serialization of 'Closure' is not allowed 

而現在我得到Trying to get property of non-object error.這是好的方式來傳遞整個請求的工作?我應該採取其他方式嗎?

回答

2

與輸入嘗試()

$request->input() 
+0

是的這是做到了!現在,我以請求作爲對象 – Michael

0

當你這樣做$request->all(),這意味着你正在傳遞一個陣列的工作,而不是整個$請求。因此,您可以在Job Handler中簡單地執行此操作。

public function handle() 
{ 
    $email = $this->request['email']; 

    var_dump('I should register user with email:' . $email); 
} 

讓我知道,如果需要別的東西:)

+0

感謝您的回覆!但我怎樣才能傳遞整個請求對象? – Michael

+0

我剛剛嘗試過你的方法,現在我得到和以前一樣的錯誤:不允許使用'Closure'序列化 – Michael

+0

你不能傳遞整個請求...這就是爲什麼你會得到** Serialization of Closure **錯誤。你只能傳遞數組。說實話...如果你使用'$ request-> all()',我的方法應該可以工作。 – prateekkathal

相關問題