Как отловить параметр get и привести его к int в Laravel? - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть следующий контроллер:

class CustomerController extends Controller
{
    public function index(int $customerId = 0) : Renderable
    {
        dd($customerId);

...

И я запрашиваю его по следующему URL http://localhost/customers?customerId=123. Я хотел бы поймать customerId как Int. Но он всегда дает 0 (значение по умолчанию для сигнатуры метода). Хорошо, я могу сделать что-то вроде:

$customerId = $request->input('customerId');

Но подход с получением параметра из сигнатуры метода для меня более привлекателен.

Я видел этот ответ ,Это выглядит очень красиво! Но это не работает для моего случая. Почему? Где ошибка? Спасибо за внимание!

Обновление

Здесь я покажу свои определения маршрутов:

Auth::routes(['register' => false, 'reset' => false]);

Route::middleware('auth')->group(function () {
    Route::resource('customers', 'CustomerController');
});

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

Если вы хотите использовать ресурсный маршрут, вы должны передать параметр customerID, как показано ниже. А также вы должны использовать один из этих методов: показать, редактировать, обновить или уничтожить в вашем контроллере.

Route::resource('customers', 'CustomerController')->parameters([
    'customers' => 'customerId'
]);

Для более подробной информации: https://laravel.com/docs/5.7/controllers#resource-controllers

1 голос
/ 09 ноября 2019

AFAIK Laravel не вводит параметры таким способом. Если такой URI действительно необходим - вам следует вручную проверить ввод запроса для ваших переменных.

Если вы хотите использовать контроллер в том виде, в котором он написан, вы должны использовать параметры маршрута (например, / Customers / {id}) вместо параметров после?. По умолчанию контроллеры ресурсов используют index () для отображения всех сущностей и show () для отображения только одной сущности.

Если вы используете Eloquent, вы также можете внедрить модель Customer, например,

public function index(Customer $customer) : Renderable

Клиент будет автоматически найден по идентификатору и введен в методе контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...