2016-09-22 8 views
1

私のコントローラには単純なロジックがあります。しかし、私はしばしば他の方法でそれを使用します。ここに例があります。Laravel 5私の単純なコントローラロジックでDRYに従うには?

私のコントローラにあります。

public function method1() 
{ 
if(isset(Auth::user()->showroom->name)){ 
      $showroomName = Auth::user()->showroom->name; 
     }else{ 
      $showroomName = "Belum Ada Izin"; 
     } 
     return view('method1view', compact('showroomName')); 
} 

public function method2() 
{ 
if(isset(Auth::user()->showroom->name)){ 
      $showroomName = Auth::user()->showroom->name; 
     }else{ 
      $showroomName = "Belum Ada Izin"; 
     } 
     return view('method2view', compact('showroomName')); 
} 
... so on 

私はどのようにDRY原理に従うことができますか?

ご協力いただければ幸いです。

ありがとうございます。あなたのショールームモデルで

答えて

0

のようなコントローラでそれを参照し、data_getヘルパーを使用します。ほとんどの場合

data_get(Auth::user(), 'showroom.name', 'your default value'); 

これは便利来ます、必ずしも最良の方法ではありません。

ただし、実際にはshare this variable across your viewsとしたいと思われるかもしれません - ドキュメントに記載されているshareまたはView Composerを使用してください。

+0

私は 'data_get()'関数をどこに置くべきですか? '$ showroomName = data_get(Auth :: user()、 'showroom.name'、 'あなたのデフォルト値')の代わりに、' $ showroomName = dataGetShowroomName() 'のようなコントローラを呼び出すことができます; –

+0

君はそれが要る。コントローラは「グローバル変数」でない限り悪くないです。例えば 'app/helpers.php'ファイル(作者' autoload - > files'配列に追加する)に関数を登録することができます。 –

0

次の関数含めることができます

public function getNameAttribute($value) 
{ 
    return isset($value) ? $value : 'Belum Ada Izin'; 
} 

あなたはどこにでもshowroom->nameが使用される行動をしたいと仮定しています。そうでない場合、機能getNameWithDefaultAttributeを作るボディに$this->nameをチェックし、Auth::user()->showroom->name_with_defaultクリーナーと短い構文について

関連する問題