2017-01-15 4 views
-1

は、だからここ保存クラス変数内のオブジェクトと別の関数でそれを使用する - PHP、laravel

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

を入れたときに、それがnullで、罰金ではない動作します。

私はここで提案しているもの試してみました:Laravel doesn't remember class variables

が、それは助けにはなりませんでした。

私はそれが愚かな私は見落としていると確信しています。しかし、何が助けになるか分かりませんでした。

+1

もし、同じ要望で 'index()'と 'feedback()'アクションを呼び出すのですか? – Timurib

+0

私は恐れている2つの異なる要求。ありがとう、分かりました。 – beeks

答えて

2

$videoの値を2つの異なる要求の間に維持することはできません。各リクエストでビデオデータを取得する必要があります。

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

} 
+0

ありがとう、それを知らなかった、私はMVCとLaravelに新しいです。 – beeks

0

まず、コントローラ内でデータをフェッチしません。それは、モデルとビューの間の「接着剤」に過ぎません。繰り返す。 コントローラー内のフェッチがありません

ドメインサービスと依存関係注入を使用してビジネスデータを取得し、このデータを共有する場合は、共有サービス(単一インスタンス)を作成します。

- コントローラプロパティクラスにデータ・オブジェクトを置く

は、メソッド呼び出しの間に一時的な依存関係を作ります。避けてください。代わりにサービスを使用してください。

+0

私はMVCとLaravelの新人です。時間があれば、ドメインサービスと依存性注入をいつ使うべきかを詳しく説明できますか? – beeks

+0

"ORMライブラリを使用している場合はキャッシュを考慮しないでください。" - なぜ? –

関連する問題