Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 试图获取Job Laravel中非对象的属性_Php_Laravel - Fatal编程技术网

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

Php 试图获取Job Laravel中非对象的属性,php,laravel,Php,Laravel,我正在尝试创建一个注册用户的作业,并尝试跟踪Jeffrey的视频,但由于某种原因,dispatchfrom似乎已被删除。这就是我现在要做的: 这是我的控制器: public function PostSignUp(Request $request) { dispatch(new RegisterUser($request->all())); return 'done'; } 这是我的工作: namespace App\Jobs; use Illuminate\Bus\Que

我正在尝试创建一个注册用户的作业,并尝试跟踪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

现在我正在尝试获取非对象错误的属性。这是将整个请求传递给作业的好方法吗?我是否应该以其他方式执行此操作?

当您执行
$request->all()
时,这意味着您正在向作业传递一个数组,而不是整个$request。因此,您可以在作业处理程序中简单地执行此操作

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

  var_dump('I should register user with email:' . $email);
}
如果需要其他内容,请告诉我:)

尝试输入()


谢谢回复!但是我怎样才能传递整个请求对象呢?我刚刚尝试了你的方法,现在我得到了和以前一样的错误:“Closure”的序列化是不允许的。你不能传递整个请求。。。这就是为什么您会得到闭包错误的序列化。您只能传递数组。老实说如果您使用的是
$request->all()
,我的方法应该可以工作。是的,您是对的,我在测试时删除了all()。遗憾的是,您无法传递整个请求对象,但这将适用于现在是的,是的!现在我将请求作为一个对象
   $request->input()