2015-12-05 2 views
0

Я хочу, чтобы манипулировать переменной адрес в ПО промежуточного слоя затем передать новый vaule некоторому дополнительному промежуточного программного обеспечения для проверки, а затем передать новое значение в контроллерLaravel 5,1 - переписывать URL-адрес переменной в ПО промежуточного слоя затем передать новое значение дополнительного промежуточного программного обеспечения и контроллера

Произвольный пример: domain.com/1-> промежуточного слоя для добавления 3 к 1 -> промежуточное программное обеспечение, чтобы проверить новый номер 4 против базы данных -> проход новый номер в контроллер

Мой маршрут:

Route::get('{v}', [ 
     'middleware' => ['rewrite','dbCheck'], 
     'uses' => '[email protected]' 
    ]); 

Я получаю переменную в средстве, используя $v = $request->v; - Как вернуть переписанную переменную в следующее промежуточное ПО и, в конечном счете, контроллер?

Я попытался сбросить переменную после используя $request['v'] = $v; не радость

ответ

1

Каждый раз, когда вы пытаетесь прочитать значение из объекта запроса, он объединяет все доступные источники данных (POST/GET массивы, строки запроса, параметры маршрута) и извлекает значение из объединенного результата. Поэтому, если вы хотите изменить значение, которое будет возвращено при попытке извлечь его из запроса, вам нужно изменить не объект запроса, а источник.

В вашем случае, если вы хотите изменить значение параметра маршрута - следующий код будет работать для вас:

$request->route()->setParameter('v', $request->v + 3); 
+0

Perfect - спасибо –