backpack-for-laravel Как изменить атрибут поля при выборе ajax

У меня есть поле в моей грязи

        $this->crud->addField([
            'name'      => 'transaction_type',
            'label'     => 'Transaction Type',
            'type'      => 'select2',
            'entity'    => 'transactionType',
            'attribute' => 'name',
            'model'     => 'App\Models\TransactionType',
            'attributes' => [
                'required' => true,
            ],
        ]);

        $this->crud->addField([
            'name'      => 'developer_id',
            'label'     => 'Developer',
            'type'      => 'select2',
            'entity'    => 'developer',
            'attribute' => 'name',
            'model'     => 'App\Models\Developer',
        ]);

Я хочу сделать атрибут, необходимый для developer_id, равным true, поскольку по умолчанию он равен false. Я знаю, как сделать это ложным, используя этот код ниже

$this->crud->modifyField('developer_id',['attributes' => [
      'required' => true,
]]);

Теперь вопрос в том, как мне сделать developer_id к 'required' => true при выборе варианта в transaction_type? Что у меня есть, так это поставить'data_source' => url("admin/api/devrequirement")'внутри поля добавления transaction_type. так это будет выглядеть так

$this->crud->addField([
            'name'      => 'transaction_type',
            'label'     => 'Transaction Type',
            'type'      => 'select2',
            'entity'    => 'transactionType',
            'attribute' => 'name',
            'data_source' => url("admin/api/devrequirement"), //i added it here
            'model'     => 'App\Models\TransactionType',
            'attributes' => [
                'required' => true,
            ],
        ]);

а затем поместите маршрут в мои пользовательские маршруты:Route::get('/api/devrequirement', 'SaleCrudController@setDevRequirement');и внутри этой функции:

public function setDevRequirement(Request $request)
    {
        $form = collect($request->input('form'))->pluck('value', 'name');
        $transaction_type = $form['transaction_type'];
        if($transaction_type == 3) //if transaction type is equal to a specific value then required attribute of developer_id should be true
        {
            $this->crud->modifyField('developer_id',['attributes' => [
                'required' => true,
            ]]);
        }
    }

Но ничего не делает. он не поставил красную звездочку в моем поле разработчика и не запросил проверку. Мне сложно с рюкзаком laravel и как с ним манипулировать ajax.

1 ответ

Решение

Неважно , я просто создаю настраиваемое поле и помещаю туда некоторые манипуляции с js

Другие вопросы по тегам