Дополнительные параметры маршрута не работают в Lumen 5.7 - PullRequest
0 голосов
/ 26 апреля 2019

Я определил свой маршрут и контроллер следующим образом

$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

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

необязательные параметры маршрута приведены, как показано ниже,

$router->get('/order/get-order-status/{order_id}/{account_id?}' // see the ? mark

, хотя я не уверен, почему 0 назначен для orderId,

и обычно первым параметром для метода контроллера являетсяобъект запроса, так что вы можете легко определить, что именно содержится в запросе.

public function getOrderStatus(Request $reqeust, $orderId, $accountId = false)
0 голосов
/ 26 апреля 2019

Я думаю, вам следует использовать необязательный параметр, например

{account_id?}, а не [/{account_id}]

...