2017-11-21 6 views
0

モデルに渡されているものに基づいてモデルを動的に読み込もうとしています。Laravel - 動的にモデルをロードし、失敗したときにビューを返す

class MyController extends Controller{ 
     $modelClass = ""; 
     public function __construct(){ 
      $this->setModel($modelName); 
      } 
     public function index(){ 
      $this->data['rows'] = $this->modelClass::all(); 
      return view('index', $this->data); 
     } 
     protected function setModel($modelName){ 
     if(!class_exists('\App\Models\\'.ucfirst($modelName)) || empty($modelName)) 
     { 
      return view('page500'); 
     }else{ 
      $this->modelClass = '\App\Models\\'.ucfirst($modelName); 
     } 
     } 
     } 

私は、エラーメッセージ "FatalThrowableError クラス 'は' が見つかりません" を取得保管。ビューが返されるとlaravelが実行を停止することを期待しますが、実行はpage500ビューをロードしておらず、実行を停止していません。

+1

'return view( 'page500');の結果は' __construct'に返されます。それだけです。 –

答えて

1

setModel関数は、呼び出し元関数のビューである__constructを返します。そして、それだけです。

はすぐに特定のエラーを上げるには - 引数としてエラーコードでabort機能を使用します。

if(!class_exists('\App\Models\\'.ucfirst($modelName)) || empty($modelName)) 
{ 
    abort(500); 
} 

はエラーページのレイアウトを変更するには - this instructionに従ってください。または単にファイルresources/views/errors/500.blade.phpを作成します。

+0

完全にうまく動作します。どうもありがとうございます。 – Olamide

関連する問題