所以这是代码
use App\Video;
class HomeController extends Controller
{
protected $video;
public function index()
{
// $video_to_watch is fetched from db and I want to save it and use it in
// another function in this controller
$this -> video = $video_to_watch;
return view('home', compact('video_to_watch'));
}
public function feedback(Request $request)
{
dd($this -> video);
}
}
反馈由于某种原因返回null。
当我把
dd($this -> video);
在index()中它可以正常工作,而不是null。
我已尝试过这里建议的内容:Laravel doesn't remember class variables
但它没有帮助。
我确定这是一个我忽视的愚蠢行为。但似乎无法弄明白什么,任何帮助都非常赞赏。
答案 0 :(得分:2)
您无法在两个不同的请求之间保留$video
值。您必须在每个请求中获取视频数据。
use App\Video;
class HomeController extends Controller
{
public function index() {
$myVideo = $this->getMyVideo();
return view('home', $myVideo);
}
public function feedback(Request $request) {
dd($this->getMyVideo);
}
private function getMyVideo() {
// fetch $video_to_watch from db
return $video_to_watch ;
}
}
答案 1 :(得分:0)
首先,不要在Controller中获取数据。它只是模型和视图之间的“粘合剂”。重复。 无法在控制器内取物。
使用域服务和依赖注入来获取业务数据,如果要共享此数据,请创建共享服务(单个实例)。
-
将数据对象放入控制器属性类会在方法调用之间产生临时依赖关系。躲开它。改为使用服务。