Добавьте поле в CrudController, который ТОЛЬКО передает значения в методы хранения / обновления - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь разобраться с тем, как поле в CrudController хранит или обновляет данные конкретной модели полностью настраиваемым способом. Я хотел бы, чтобы методы traitStore () и traitUpdate () полностью игнорировали это поле, но хотели бы, чтобы данные по-прежнему передавались через запрос. Это конкретно относится к отношению многие-многие с использованием поля select2_multiple.

Мне бы хотелось, чтобы идентификаторы отношений передавались через объект запроса в методы Store или Update, но я НЕ хочу, чтобы методы traitStore() или traitUpdate() действительно выполняли обновления для этого конкретного поля. ссылка.

Например ...

У меня есть это поле в моем контроллере crud

$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'}), но он все равно обновляет / удаляет отношения, когда я это делаю.

1 Ответ

1 голос
/ 23 января 2020

Вот что вам нужно сделать, чтобы удалить ссылки с обновлений 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;
}
...