2016-11-27 1 views
2

Ich versuche, Job zu registrieren, um Benutzer zu registrieren und Jeffrey's Video zu folgen, aber sieht aus, wie dispatchfrom aus irgendeinem Grund entfernt wird. Dies ist, was ich versuche jetzt zu tun:Versuch, die Eigenschaft von Nicht-Objekt in Job Laravel zu bekommen

Das ist mein Controller ist:

public function PostSignUp(Request $request) 
{ 

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

} 

Das ist mein Job ist:

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); 
    } 
} 

Ich habe auch versucht

nur $request zu setzen anstelle von $request->all()

aber dann bekomme ich

Und jetzt bekomme ich Trying to get property of non-object error. Ist das eine gute Möglichkeit, ganze Anfrage an den Job zu übergeben? Sollte ich es anders machen?

Antwort

2

versuchen, mit Eingang()

$request->input() 
+0

Yep Das hat es geschafft! Jetzt bekomme ich eine Anfrage als Objekt – Michael

0

Wenn Sie $request->all() tun, bedeutet, dass Sie einen Array zum Job sind vorbei und nicht die ganze $ Anfrage. Daher können Sie dies einfach in Ihrem Job Handler tun.

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

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

Lassen Sie mich wissen, wenn etwas anderes erforderlich ist :)

+0

Danke für Ihre Antwort! Aber wie kann ich das ganze Anfrageobjekt übergeben? – Michael

+0

Ich habe gerade Ihre Methode versucht, jetzt bekomme ich denselben Fehler wie zuvor: Serialisierung von 'Closure' ist nicht erlaubt – Michael

+0

Sie können nicht die gesamte Anfrage übergeben ... deshalb erhalten Sie die ** Serialisierung der Schließung ** Fehler. Sie können das Array nur übergeben. Um ehrlich zu sein ... sollte meine Methode funktionieren, wenn Sie '$ request-> all()' verwenden. – prateekkathal

Verwandte Themen