向仅将值传递给存储/更新方法的CrudController添加字段

问题描述 投票:0回答:1

我正在尝试处理CrudController中的字段如何以完全自定义的方式存储或更新特定模型上的数据。我希望traitStore()和traitUpdate()方法完全忽略此字段,但希望数据仍通过请求传递。这是专门针对使用select2_multiple字段的多对多关系。

我希望将关系ID经由请求对象传递给Store或Update方法,但是我不希望traitStore()traitUpdate()方法实际上对该特定字段引用执行更新。

例如...

我的控制器中有此字段

$this->crud->addField(
            [
                'label' => "Groups",
                'type' => 'select2_multiple',
                'name' => 'groups', 
                'entity' => 'groups', 
                'attribute' => 'title', 
                'model' => "App\Models\Group", 
                'pivot' => true
            ]
        );

而且我像这样覆盖了存储和更新方法。

public function store()
    {
        $this->crud->setValidation(UserRequest::class);

        // WOULD LIKE TO SAVE EVERYTHING BUT IGNORE THE GROUPS FIELD
        $response = $this->traitStore();

        // DO WHATEVER I WANT WITH GROUPS AT THIS POINT
        $groups = $request->groups

        return $response;
    }

public function update()
    {
        $this->crud->setValidation(UserRequest::class);

        // WOULD LIKE TO SAVE EVERYTHING BUT IGNORE THE GROUPS FIELD
        $response = $this->traitUpdate();

        // DO WHATEVER I WANT WITH GROUPS AT THIS POINT
        $groups = $request->groups

        return $response;
    }

查看我的评论,我想获得对这些组的引用,并根据需要进行模型更新。

我尝试取消请求unset($this->request{'groups'})中的groups值,但是当我这样做时,它仍会更新/删除关系。

backpack-for-laravel
1个回答
0
投票

这里是您需要执行的操作,以删除由CrudController更新的引用。

public function update()
{
        $this->crud->setValidation(UserRequest::class);

        $request = clone $this->request;
        $this->crud->request->request->remove('groups');
        $this->crud->removeField('groups');

        $groups = $request->groups

        $response = $this->traitUpdate();


        return $response;
}
© www.soinside.com 2019 - 2024. All rights reserved.