2013-12-09 6 views
7

Я хочу, чтобы указать, что если что-то вошел в URL, адрес, кроме существующих маршрутов (в routes.php, а затем показать страницу 404Laravel маршрутизации и 404 ошибка

Я знаю об этом:.

App::abort(404); 
?

, но как я могу указать ту часть, где все остальное, кроме маршрутов, определенный

ответ

29

Вы можете добавить это в файл filters.php:

App::missing(function($exception) 
{ 
    return Response::view('errors.missing', array(), 404); 
}); 

И создайте файл изображения errors.missing, чтобы показать им ошибку.

Также обратите внимание на Errors & Logging docs

EDIT

Если вам нужно передать данные в этой точке зрения, то второй параметр является массивом вы можете использовать:

App::missing(function($exception) 
{ 
    return Response::view('errors.missing', array('url' => Request::url()), 404); 
}); 
+0

Как передать запрос: url() для пропущенного клинка. – alayli

+0

Отредактировано для ответа на ваш вопрос. –

+0

Здравствуйте ... возможно, чтобы предыдущий URL-адрес добавил ссылку на страницу 404, например «Перейти на предыдущую страницу»? – SoldierCorp

5

I советую поместить это в ваш app/start/global.php, так как именно там Laravel обрабатывает его по умолчанию (хотя filters.php также будет работать). Я обычно использую что-то вроде этого:

/* 
|-------------------------------------------------------------------------- 
| Application Error Handler 
|-------------------------------------------------------------------------- 
| 
| Here you may handle any errors that occur in your application, including 
| logging them or displaying custom views for specific errors. You may 
| even register several error handlers to handle different types of 
| exceptions. If nothing is returned, the default error view is 
| shown, which includes a detailed stack trace during debug. 
| 
*/ 

App::error(function(Exception $exception, $code) 
{ 
    $pathInfo = Request::getPathInfo(); 
    $message = $exception->getMessage() ?: 'Exception'; 
    Log::error("$code - $message @ $pathInfo\r\n$exception"); 

    if (Config::get('app.debug')) { 
     return; 
    } 

    switch ($code) 
    { 
     case 403: 
      return Response::view('errors/403', array(), 403); 

     case 500: 
      return Response::view('errors/500', array(), 500); 

     default: 
      return Response::view('errors/404', array(), $code); 
    } 
}); 

Тогда просто сделать errors папку внутри /views и поместить содержимое страницы ошибки там. Как отметил Антонио, вы можете передавать данные внутри array().

я любезно позаимствовал этот метод из https://github.com/andrewelkins/Laravel-4-Bootstrap-Starter-Site

+0

Использование 'Laravel 5.2' и' app/start/global.php' недоступно. Можете ли вы предложить, что я должен делать? – Pankaj

0

Это мой подход только для отображения ошибки 404 с компоновкой шаблона. Просто добавьте следующий код в файл /app/start/global.php

App::missing(function($exception) 
{ 
    $layout = \View::make('layouts.error'); 
    $layout->content = \View::make('views.errors.404'); 
    return Response::make($layout, 404); 
}); 
1

Только для парней с помощью Laravel 5, есть ошибки в папке в каталоге просмотров. Вам просто нужно создать файл 404.blade.php, и он отобразит это представление, когда маршрут не указан для URL-адреса

Смежные вопросы