Octobercms: Как я могу сделать поле повторителя jsonable, потому что я создаю это поле повторителя в другой плагин

Как я могу сделать поле повторителя jsonable, потому что я создаю это поле повторителя в другом плагине и создал свой собственный плагин. Например: я хочу добавить поле повторителя в модели плагина rainlab.user, но я хочу сделать это с помощью моего собственного плагина, чтобы обновления плагина rainlab.user не влияли на мою работу. Спасибо

1 ответ

Решение

Вы должны прочитать о расширении плагинов.

1) Сначала зарегистрируйте события в своем кастоме plugin.php - пример

2) Добавьте связанные поля в ваш файл миграции - Пример - Убедитесь, что тип поля установлен на json или же text: $table->json('field_name')->nullable();

Допустим, вы хотите добавить Dogs поле повторителя для пользовательской модели;

public function boot()
{

    UserModel::extend(function($model)
    {
        $model->addJsonable([
            'dogs',
        ]);
    });

    UsersController::extendFormFields(function($form, $model, $context){

        if (!$model instanceof UserModel) {
            return;
        }

        $form->addTabFields([
            'dogs' => [
                'label'      => 'My Dogs',
                'type'       => 'repeater',
                'form'       => [
                    'fields' => [
                        'breed' => [
                            'label' => 'Breed',
                            'type' => 'dropdown',
                            'options' => [
                                'labrador' => "Labrador",
                                'cocker'   => "Cocker Spaniel"
                            ]
                        ],
                        'name' => [
                            'label' => 'Name',
                            'type' => 'text',
                        ]
                    ],
                ],
            ],
        ]);

    });

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