试图在Job Laravel中获取非对象的属性

时间:2016-11-27 13:59:55

标签: php laravel

我正在努力创建注册用户的工作并试图关注Jeffrey的视频,但看起来像dispatchfrom由于某种原因被删除。这就是我现在要做的事情:

这是我的控制者:

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 个答案:

答案 0 :(得分:2)

尝试使用input()

   $request->input()

答案 1 :(得分:0)

执行$request->all()时,表示您将数组传递给作业,而不是整个$ request 。因此,您可以在Job Handler中执行此操作。

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

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

如果需要其他东西,请告诉我们。)