Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте. Нуждаюсь в небольшом ликбезе. Пытаюсь методом GET передать в контроллер параметр, например id. В контроллере принимаю таким образом:
public function getId(Request $request){
dd($request->id);//Выводится нужный id
dd($request->all());//Выводится массив, но в нем нет id
}
Далее мне нужно передать $request в Validator. Почему метод all() не возвращает id? И как мне его отправить в Validator?
Не в сети
Покажите route? Каким образом ID передается — как query параметр, или как часть URL?
Валидировать самый простой способ — сделать кастомный запрос php artisan make:request, заменить Request $request на этот новый класс, а там внутри класса Вам Laravel создаст метод rules() — там будут правила для валидатора
Не в сети
Route::get('/admin/toBasket/{id}', 'AdminController@toBasket')->where('id', '[0-9]+');
Да, передается как часть урла.
Не в сети
duster, сделал как вы говорили, с помощью make:request но передача методом гет все равно не работает.
public function rules()
{
return [
'id' => 'required|numeric',
];
}
отправляю так
<a href="{{ url('/admin/toBasket/'.$order['id']) }}">В корзину</a>
Возвращается ошибка что поле id обязательно для заполнения. Я так понимаю что это связано с тем, что для получаемой переменной не задан ключ id. Каким образом вообще валидироавать переменные полученные методом гет?
Не в сети
Так и думал — у Вас же ID в URL, не в параметрах.
Входные параметры (массив $request->all()) по определению — это GET/POST параметры (то что идет после? в адресе).
Параметр, замаскированный в URL — это не параметр GET, строго говоря.
Laravel такие значения вставляет в объект $request (что Вы уже и так нашли), еще они доступны как $request->route(’id’).
Валидировать можно в методе authorize() в созданном классе запроса. Можно сделать проверку is_int(), можно проверить есть ли права у юзера.
’required’ — бессмысленно проверять, раз юзер сюда попал по маршруту — значит ID указан. Иначе бы не сработал маршрут
Не в сети
'required' - бессмысленно проверять, раз юзер сюда попал по маршруту - значит ID указан. Иначе бы не сработал маршрут
Точно) И на numeric тоже, ведь в роуте прописан where)
А каким образом в методе Authorize мне получить данную переменную, чтобы проверить на is_int()?
Не в сети
Не в сети
Ясно, спасибо больое, вы мне очень помогли)
Не в сети
<a href="{{ url('/admin/toBasket/'.$order['id']) }}">В корзину</a>
а зачем он здесь использует функцию url() ? Почему не оставить просто <a href="/admin/toBasket/{{ $order['id']) }}">В корзину</a> ?
Не в сети
[quote=potMaster]
а зачем он здесь использует функцию url() ? Почему не оставить просто <a href="/admin/toBasket/This {{Action}} has wrong syntax and can’t be executed.">В корзину</a> ?[/quote]
Для гибкости лучше везде использовать хелпер url()
Это спасет если Laravel установлен в нестандартную папку (базовый путь скажем /laravel, а не /)
Не в сети
Страницы 1