0

these are my api:

$api = app('Dingo\Api\Routing\Router');

$api->version('v1', ['as' => 'admin',
                     'middleware' => 'api.auth',
                     'namespace' => 'Modules\OrgUnit\Http\Controllers'], function ($api) {

    $api->group(['prefix' => 'admin/org_units', 'as' => 'org_units'], function ($api) {

            $api->get('/datatable', 'OrgUnitController@datatable')->name('.datatable');

            $api->resource('/', 'OrgUnitController');
    });

});

but api/v1/admin/org_units/datatable works find but api/v1/admin/org_units/3 returns 404 Not Found message.

my routes list:

|      | GET|HEAD                       | /api/v1/admin/org_units/datatable                                                                   | admin.org_units.datatable                                                               | Modules\OrgUnit\Http\Controllers\OrgUnitController@datatable                                                       | Yes       | v1         |          |            |
|      | GET|HEAD                       | /api/v1/admin/org_units                                                                             | admin.org_units.index                                                                   | Modules\OrgUnit\Http\Controllers\OrgUnitController@index                                                           | Yes       | v1         |          |            |
|      | POST                           | /api/v1/admin/org_units                                                                             | admin.org_units.store                                                                   | Modules\OrgUnit\Http\Controllers\OrgUnitController@store                                                           | Yes       | v1         |          |            |
|      | GET|HEAD                       | /api/v1/admin/org_units/{}                                                                          | admin.org_units.show                                                                    | Modules\OrgUnit\Http\Controllers\OrgUnitController@show                                                            | Yes       | v1         |          |            |
|      | PUT|PATCH                      | /api/v1/admin/org_units/{}                                                                          | admin.org_units.update                                                                  | Modules\OrgUnit\Http\Controllers\OrgUnitController@update                                                          | Yes       | v1         |          |            |
|      | DELETE                         | /api/v1/admin/org_units/{}                                                                          | admin.org_units.destroy                                                                 | Modules\OrgUnit\Http\Controllers\OrgUnitController@destroy                                                         | Yes       | v1         |          |            |

I think the end of my route list should be a org_unit parameters but the result is empty ( {} ) !

Salim Djerbouh
  • 10,719
  • 6
  • 29
  • 61
S.M_Emamian
  • 17,005
  • 37
  • 135
  • 254

1 Answers1

1

Pass the missing parameter when creating the route

$api->resource('/{org_unit}', 'Modules\OrgUnit\Http\Controllers\OrgUnitController');

Make sure to have a route key name in your OrgUnit model

public function getRouteKeyName()
{
   return 'id';
}

From the docs

You can also register resources and controllers using the respective methods.

Note that you must specify the full namespace to the controller, e.g., App\Http\Controllers.

You can also pass parameters like so See This

$api->resource('org_units', 'Modules\OrgUnit\Http\Controllers\OrgUnitController', [
       'parameters' => ['org_unit' => 'application'],
])->middlware('bindings');
Salim Djerbouh
  • 10,719
  • 6
  • 29
  • 61
  • Not solved, I think this is a bug of `Dingo` library. Unfortunately I write two group: `admin` then inside of it `org_units`. – S.M_Emamian Sep 29 '19 at 06:54