У меня есть этот маршрут в приложении Laravel 4:
Route::controller('about','AboutController');
Когда я иду в http://website/about/imprint
Я получаю отпечаток, но когда я иду в http://website/about/imprint/12345
, (который не используется в контроллере) Я также получаю отпечаток. Это не выдает ошибку.
Это проблема? Должен ли я как-то поймать его и показать ошибку 404, или это не имеет значения?
Я могу даже пойти в http://website/about/imprint/7/7/7/7
например, без получения сообщения об ошибке.
AboutController
выглядит так:
<?php
class AboutController extends BaseController
{
public function getIndex()
{
return View::make('about');
}
public function getImprint()
{
return View::make('imprint');
}
public function getDatenschutz()
{
return View::make('datenschutz');
}
}
Я предпочитаю использовать что-то подобное для моих маршрутов:
Route :: get (‘/ about / imprint’, ‘AboutController @ getImprint’)
Но это только мое мнение. С этим синтаксисом он автоматически дает исключение NotFoundHTTPException для чего-то подобного ‘/ about / imprint / 7/7/7/7/7/7/7’, поэтому вам не нужно проверять это.
Теперь, если вам нужны дополнительные вещи, у вас может быть другой маршрут для этого, например:
Route :: get (‘/ about / imprint / {id}’, ‘AboutController @ getImprint’) -> where (‘id’, ‘[0-9] +’);
Тогда getImprint () будет выглядеть так:
function getImprint($id){
// can only get here if id is a number (based on where clause)
}
Что-нибудь после imprint/
передается в ваш getImprint()
функционировать как аргументы. Это можно увидеть, изменив функцию getImprint () для вывода аргументов, например так:
public function getImprint() {
return "Imprint <br />Args: " . print_r(func_get_args(), true);
}
затем http://website/about/imprint/12345
вернул бы страницу, которая выглядит так:
Imprint
Args: Array ( [0] => 12345 )
а также http://website/about/imprint/7/8/9/10
вернул бы страницу, которая выглядит так:
Imprint
Args: Array ( [0] => 7 [1] => 8 [2] => 9 [3] => 10 )