【发布时间】:2018-09-16 01:36:14
【问题描述】:
正如您在下面粘贴的代码中看到的那样,我在 Route::groups 中使用 CRUD::resources 来嵌套我的 crud。这在第一级工作得很好。但是,我对第 2 层和第 3 层有疑问。
我的 crud 索引运行良好。创造也是如此。但是,编辑/更新和删除都有问题。我遇到 404 错误“没有模型 [App\Models\TeamUserRole] 1 的查询结果”。
这是我的路线代码:
Route::group([
'prefix' => config('backpack.base.route_prefix', 'admin'),
'middleware' => ['web', config('backpack.base.middleware_key', 'admin')],
'namespace' => 'App\Http\Controllers\Admin'], function () {
CRUD::resource('user', 'UserCrudController');
CRUD::resource('tasks', 'TaskCrudController');
CRUD::resource('teams', 'TeamCrudController');
Route::group(['prefix' => 'teams/{team_id}'], function()
{
CRUD::resource('tasks', 'TeamTaskCrudController');
CRUD::resource('users', 'TeamUserCrudController');
CRUD::resource('teams', 'TeamConnectionCrudController');
Route::group(['prefix' => 'setup/'], function()
{
CRUD::resource('skills', 'TeamSkillCrudController');
CRUD::resource('services', 'TeamServiceCrudController');
CRUD::resource('categories', 'TeamCategoryCrudController');
CRUD::resource('user/roles', 'TeamUserRoleCrudController');
CRUD::resource('user/permissions', 'TeamUserPermissionCrudController');
CRUD::resource('team/types', 'TeamTypeCrudController');
CRUD::resource('team/features', 'TeamFeatureCrudController');
CRUD::resource('team/connection/types', 'TeamConnectionTypeCrudController');
CRUD::resource('team/connection/permissions', 'TeamConnectionPermissionCrudController');
});
}); });
这是我的 crud 控制器代码:
namespace App\Http\Controllers\Admin;
use App\Models\Team;
use Backpack\CRUD\app\Http\Controllers\CrudController;
// VALIDATION: change the requests to match your own file names if you
need form validation
use App\Http\Requests\TeamUserRoleRequest as StoreRequest;
use App\Http\Requests\TeamUserRoleRequest as UpdateRequest;
class TeamUserRoleCrudController extends CrudController
{
public function setup()
{
/*
|--------------------------------------------------------------------------
| BASIC CRUD INFORMATION
|--------------------------------------------------------------------------
*/
$this->crud->team_name = null;
$this->crud->team_id = \Route::current()->parameter('team_id');
if (isset($this->crud->team_id)) {
$this->crud->team_name = Team::find($this->crud->team_id)->name;
}
$this->crud->setModel('App\Models\TeamUserRole');
$this->crud->setRoute(config('backpack.base.route_prefix') . '/teams/'.$this->crud->team_id.'/setup/user/roles');
$this->crud->setEntityNameStrings('Team User Role', 'Team User Roles');
// set a different route for the admin panel buttons
$this->crud->addClause('Where', 'team_id', $this->crud->team_id);
/*
|--------------------------------------------------------------------------
| BASIC CRUD INFORMATION
|--------------------------------------------------------------------------
*/
// $this->crud->setFromDb();
// ------ CRUD FIELDS
$this->crud->addField([ // Text
'name' => 'name',
'label' => "Name",
'type' => 'text',
// optional
//'prefix' => '',
//'suffix' => '',
//'default' => 'some value', // default value
//'hint' => 'Some hint text', // helpful text, show up after input
//'attributes' => [
//'placeholder' => 'Some text when empty',
//'class' => 'form-control some-class'
//], // extra HTML attributes and values your input might need
//'wrapperAttributes' => [
//'class' => 'form-group col-md-12'
//], // extra HTML attributes for the field wrapper - mostly for resizing fields
//'readonly'=>'readonly',
], 'update/create/both');
$this->crud->addField([
'label' => 'Permissions',
'type' => 'checklist',
'name' => 'permissions',
'entity' => 'permissions',
'attribute' => 'name',
'model' => 'App\Models\TeamUserPermission',
'pivot' => true,
]);
// $this->crud->addField($options, 'update/create/both');
// $this->crud->addFields($array_of_arrays, 'update/create/both');
// $this->crud->removeField('name', 'update/create/both');
// $this->crud->removeFields($array_of_names, 'update/create/both');
// ------ CRUD COLUMNS
$this->crud->addColumn([
'name' => 'name', // The db column name
'label' => "Role", // Table column heading
// 'prefix' => "Name: ",
// 'suffix' => "(user)",
// 'limit' => 120, // character limit; default is 80;
]);
$this->crud->addColumn([ // n-n relationship (with pivot table)
'label' => 'Permissions',
'type' => 'select_multiple',
'name' => 'permissions',
'entity' => 'permissions',
'attribute' => 'name',
'model' => 'App\Models\TeamUserPermission',
'pivot' => true,
]);
}
public function store(StoreRequest $request)
{
/* Set Team ID */
$request->request->set('team_id',$this->crud->team_id);
// your additional operations before save here
$redirect_location = parent::storeCrud($request);
// your additional operations after save here
// use $this->data['entry'] or $this->crud->entry
return $redirect_location;
}
public function update(UpdateRequest $request)
{
// your additional operations before save here
$redirect_location = parent::updateCrud($request);
// your additional operations after save here
// use $this->data['entry'] or $this->crud->entry
return $redirect_location;
}
}
【问题讨论】:
标签: laravel laravel-routing laravel-5.6 laravel-backpack