2017-01-29 5 views
0

Как я начинаю с Laravel, это должно быть просто: Как я могу определить настраиваемый просмотр, который будет отображаться, когда моя привязка к модели маршрута просто не может найти данный идентификатор?Laravel 5.4: Пользовательский вид привязки маршрутной модели не находит идентификатор

Вот мой маршрут:

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. Формальный способ (но это было бы действительно необходимо настроить таким образом?)

Прежде всего, то, что Laravel делает, если не существует модельный ряд в БД с заданным идентификатором, его автоматически отправляет 404 ответа.

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

Так что, если вы хотите показать свой индивидуальный вид, вам нужно настроить обработку ошибок. Так RouteServiceProvider файл, убедитесь, что он бросает исключение, используя пользовательские 3-ий параметров, как follwoing:

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

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

А затем сделать то же самое в функции визуализации, как вы пробовали раньше.

2. случайным образом - Довольно легко идти

Я бы скорее предположить, что вы не используете возможности впрыска модель, но обработать запрос самостоятельно. Итак, возьмите значение id empresa как есть, а затем попытайтесь найти нужные данные, а если не найдете их, сделайте свою собственную логику. Это должно быть довольно легко.

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