Дополнительные параметры маршрута не работают в 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}]

Другие вопросы по тегам