Дополнительные параметры маршрута не работают в Lumen 5.7
Я определил свой маршрут и контроллер следующим образом
$router->group(['prefix' => 'api/v1'], function ($router) {
$router->group(
['middleware' => 'auth'], function() use ($router) {
$router->get('/order/get-order-status/{order_id}[/{account_id}]'
, [
'uses' => 'Api\V1\OrderController@getOrderStatus'
, 'as' => 'getOrderStatus'
]
);
});
});
ниже приводится определение функции
public function getOrderStatus($orderId, $accountId = false)
{
// my code goes here
}
Здесь проблема всегда, я пропускаю необязательный account_id
с трассы, затем прошел order_id
присваивается второму параметру функции i,e. accountId
, Если я передаю оба параметра, то все работает, как ожидалось. Я просто запутался, что-то не так в моей конфигурации или Lumen
само по себе есть некоторые проблемы с дополнительными параметрами маршрута?
Считайте, что я сработал http://localhost/lumen/api/v1/order/get-order-status/ORD1234
затем ORD1234
назначен на accountId
и "0" назначен orderId
3 ответа
Дополнительные параметры маршрута указаны ниже,
$router->get('/order/get-order-status/{order_id}/{account_id?}' // see the ? mark
хотя я не уверен, почему 0 назначен для orderId,
и обычно первым параметром метода контроллера является объект запроса, поэтому вы можете легко определить, что именно содержится в запросе.
public function getOrderStatus(Request $reqeust, $orderId, $accountId = false)
переместите свой необязательный параметр route за пределы группы
$router->group(['prefix' => 'api/v1'], function ($router) {
$router->get('/order/get-order-status/{order_id}[/{account_id}]'
, [
,'middleware' => 'auth',
'uses' => 'Api\V1\OrderController@getOrderStatus'
, 'as' => 'getOrderStatus'
]
);
или как этот следующий код
$router->get('api/v1/order/get-order-status/{order_id}[/{account_id}]',
['uses' => 'Api\V1\OrderController@getOrderStatus',
'middleware' => 'auth',
'as' => 'getOrderStatus'
]
);
Я думаю, что вы должны использовать необязательный параметр, как
{account_id?}
скорее тогда[/{account_id}]