Так у меня есть маршрут с 3 параметрами, как такзащита Route - Laravel
Route::get('search-restaurant/{location}/{day}/{time}', '[email protected]_restaurant');
Для каждого запроса на этот маршрут, я хочу, чтобы проверить эти параметры, так или иначе.
Для параметра time
я видел документы о том, как прикрепить regex
к нему, но не в документации 5.2
, но даже если я нашел документы мне нужно проверить другие, а также
Поэтому в основном я попробовал два различные способы проверки и проверки параметров, но никто не работает.
Метод 1 - Conroller
public function search_restaurant ($location, $day, $time) {
if($day != 'today' || $day != 'tomorrow') {
abort(500);
} elseif (!in_array($location, $locations)) {
abort(500);
} elseif (!preg_match("/(2[0-3]|[01][0-9])([0-5][0-9])/", $time) && $time != "asap") {
abort(500);
} elseif ($day == "tomorrow" && $time == "asap") {
abort(500);
} else {
.....//rest of code - send to view
}
}
Метод 2 - Промежуточное
public function handle($request, Closure $next)
{
$location = $request->route('location');
$day = $request->route('day');
$time = $request->route('time');
$locations = Array('central','garki-1','garki-2','wuse-2','wuse-1','gwarimpa','maitama','asokoro');
if($day != 'today' || $day != 'tomorrow') { // check string
abort(500);
} elseif (!in_array($location, $locations)) { // check against array
abort(500);
} elseif (!preg_match("/(2[0-3]|[01][0-9])([0-5][0-9])/", $time) && $time != "asap") { // check agains regex
abort(500);
} elseif ($day == "tomorrow" && $time == "asap") { // check against string
abort(500);
}
return $next($request);
}
Как вы можете видеть, я просто делаю простые if..else
заявления на переменные, но условия, кажется, всегда быть правдой. Я пробовал эти правила один за другим, но каждый раз, когда они терпят неудачу, и я отправляюсь в 500 page
.
Любое руководство оценили
Цените объяснение !!! –