Я новичок в Laravel и в Backpack for Laravel, поэтому, пожалуйста, потерпите меня.Я пытаюсь создать форму регистрации клиента с полем «Состояние», которое заполняется динамически в зависимости от значения, выбранного для поля «Страна».
Я следую инструкциям, предоставленным здесь автором Backpack: https://backpackforlaravel.com/docs/3.5/crud-fields#select2_from_ajax
Из этого набора данных получены состояния и страны: https://github.com/antonioribeiro/countries. Они возвращаются как коллекции, но не читаются из БД.
Схема таблицы для клиентов (упрощенно)
+-------------------+---------+--------+
| Field | Type | Length |
+-------------------+---------+--------+
| uuid | CHAR | 36 |
| name | VARCHAR | 128 |
| city | VARCHAR | 128 |
| state | VARCHAR | 64 |
| country_iso_cca2 | VARCHAR | 2 |
+-------------------|---------+--------+
Хорошая часть
Поле "Страна" работает просто отлично.Он извлекает данные из набора данных JSON при создании и считывает / записывает информацию из или в БД при обновлении / сохранении:
// ClientCrudController.php
$countries = new Countries();
$allCountriesCodes = $countries->all()->pluck('name.common', 'cca2')->toArray();
$this->crud->addField([
'name' => 'country_iso_cca2',
'label' => 'Country',
'type' => 'select2_from_array',
'options' => $allCountriesCodes,
'allows_null' => false,
'default' => 'US',
]);
Плохая (неполная) часть
// ClientCrudController.php
$this->crud->addField([
'name' => 'state',
'label' => 'State',
'type' => 'select2_from_ajax',
'entity' => 'foobar', // the method that defines the relationship in your Model
'attribute' => 'name',
'data_source' => url('api/states'),
'placeholder' => 'Select a country first...',
'dependencies' => ['country_iso_cca2'],
]);
Вызов /admin/client/create
приведет к ошибке ( «Вызов неопределенного метода App \ Models \ Client :: foobar» ).
Я понимаю, что ошибка возникает потому, что не определена модель для состояний и, следовательно, нет взаимосвязи.Моя проблема в том, что я не понимаю, как должна выглядеть реализация в подобном случае, когда два поля выбора не представляют отдельные объекты на уровне ORM.
Возможно ли реализовать этот видзависимость "родным рюкзаком" способом, не прибегая к созданию настраиваемого типа поля?