2017-01-29 7 views
0

が見つからないルートモデルは、結合のためのカスタムビュー、これは簡単なものでなければなりません。私のルートモデルがちょうど結合するとき はどのようにレンダリングされるようにカスタムビューを定義することができます指定されたIDを見つけることができませんか?ここでLaravel 5.4:私はLaravelでbegginingていたようID

は私のルートです:

Route::get('/empresa/edit/{empresa}', '[email protected]');

は、ここに私のコントローラのメソッドです:

public function edit(Empresa $empresa) 
{ 
    if ((!isset($empresa)) || ($empresa == null)): 
     //I get that this won't work... 
     return 'Empresa não encontrada'; 
    endif; 

    return view('Empresa.dadosEmpresa')->with('empresa', $empresa)->with('action', URL::route('empresa_update', ['id', $empresa->id]))->with('method', 'PATCH'); 
} 

はここでエラーハンドラを使用するには、私の "試み" です:

これはどのように
public function render($request, Exception $exception) 
{ 
    if ($e instanceof ModelNotFoundException) 
    { 
     //this is just giving me a completely blank response page 
     return 'Empresa não encontrada'; 
    } 
    return parent::render($request, $exception); 
} 

本当にやった?

答えて

2

1.正式な方法(しかし、本当にこのような方法でカスタマイズすることが必要だろうか?)

すべての最初のモデル行が、それは、与えられたidのDBに存在しない場合には、どのようなLaravelはないこと、です自動的に404応答を送信します。

If a matching model instance is not found in the database, a 404 HTTP response will be automatically generated.

あなたがカスタマイズしたビューを表示したいのであれば、あなたは、エラー処理をカスタマイズする必要があります。 だから、RouteServiceProviderファイルに、必ずそれはfollwoingのような第三のparamを使用してカスタム例外をスローします:あなたは以前に試したとして

public function boot() 
{ 
    parent::boot(); 

    Route::model('empresa', App\Empresa::class, function() { 
     throw new NotFoundEmpresaModelException; 
    }); 
} 

そして、レンダリング機能で同じことを行います。

2.カジュアルな方法 - かなり簡単に行くこと

私はむしろあなたがモデル注入能力を使用していないことを示唆しているが、要求を自分で扱うdは。 empresa idの値をそのまま使用し、適切なデータを見つけようとします。見つからなければ、カスタムロジックを作成します。それはかなり簡単に行くはずです。

public function edit(Request $request, $empresa) 
{ 
    $empresaObj = Empresa::find($empresa); 
    if (!$empresa) { 
     return 'Empresa não encontrada'; 
    } 

    return view('Empresa.dadosEmpresa')->with('empresa', $empresa)->with('action', URL::route('empresa_update', ['id', $empresa->id]))->with('method', 'PATCH'); 
} 
関連する問題