请注意我的问题不是如何将变量从一个函数传递到另一个函数。我的问题是,应该接收变量的函数已经有一个' $ request'参数(从一个表单,存储在数据库中,与我想传递给它的变量一起),这会导致它标记错误。
类PingController扩展Controller {
public $long;
public $lat;
public function getPostAdd($longitude, $latitude){
$this->long = $longitude;
$this->postForm();
$this->lat = $latitude;
$this->postForm();
return view('form');
}
public function postForm(Request $request){
$ping = new Ping();
$ping->longitude = dd($this->long);
$ping->latitude = dd($this->lat);
$ping->title = $request->input('title');
$ping->user_id = Auth::user()->id;
$ping->description = $request->input('description');
$ping->organization = $request->input('organization');
Auth::user()->pings()->save($ping);
return "Data saved in database";
}
}
它给出了这个错误:
PingController.php第23行中的FatalThrowableError: 类型错误:传递给App \ Http \ Controllers \ PingController :: postForm()的参数1必须是Request的实例,没有给定,在C:\ Users \ CAESAR \ Desktop \ eepme \ app \ Http \ Controllers \ PingController中调用。第17行的PHP
有什么建议吗?
答案 0 :(得分:0)
错误非常明显。
但是,如果您无法将$request
对象传递给postForm
函数,则还可以使用全局request()
帮助程序检索请求对象。 Documentation
public function postForm()
{
$ping = new Ping();
$ping->longitude = dd($this->long);
$ping->latitude = dd($this->lat);
$ping->title = request()->title;
$ping->user_id = Auth::user()->id;
$ping->description = request()->description;
$ping->organization = request()->organization;
Auth::user()->pings()->save($ping);
return "Data saved in database";
}
答案 1 :(得分:0)
您可以在第一种方法中注入请求对象,并使用它来调用第二种方法。这不会影响您的路线参数。
public function getPostAdd(Request $request, $longitude, $latitude){
$this->long = $longitude;
$this->postForm(request);
$this->lat = $latitude;
$this->postForm(request);
return view('form');
}
这回答了你的问题,但你的整个实施都是有缺陷的,而且非常糟糕。