2016-11-27 66 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

相关问题