Добавить поля загрузки файла в cms за октябрь - PullRequest
0 голосов
/ 15 октября 2019

Я хочу, чтобы пользовательские backend_users добавили поле изображения. Я расширяю поле модели и формы в методе загрузки следующим образом:

public function boot()
{
    BackendUserModel::extend(function($model) {
        $model->attachOne['image'] = \System\Models\File::class;
    });

    BackendUserController::extendFormFields(function($form, $model, $context) {
        $form->addTabFields([
            'image' => [
                'label' => 'image',
                'type' => 'fileupload',
                'tab' => 'image'
            ],
       ]);
   });
}

И это показывает ошибку:

Модель 'System \ Models \ File' не содержит определения для 'image '.

Что я сделал не так? Пожалуйста, помогите мне. Спасибо!

1 Ответ

1 голос
/ 15 октября 2019

Проблема

Ваш код BackendUserController::extendFormFields распространяется на все формы, которые находятся на вашем BackendUserController.

Так что, чтобы убедиться, что есть2 формы

  1. Бэкэнд Форма пользователя
  2. avatar поля * \System\Models\File С

Итак, ваш кодв основном добавляет поле image к обеим формам, поэтому мы получаем ошибку для 2-й формы Model 'System\Models\File' does not contain a definition for 'image'.

Решение

Чтобы избежать этого, мыпросто нужно убедиться, что мы adding field к correct model, добавив condition.

\Backend\Controllers\Users::extendFormFields(function($form, $model, $context) {

    // Only for the backend User model we need to add this
    if ($model instanceof \Backend\Models\User) { // <- add this condition
        $form->addTabFields([
            'image' => [
                'label' => 'image',
                'type' => 'fileupload',
                'tab' => 'image'
            ],
        ]);
    }
});

Теперь нужно добавить только поле image для пользовательской модели бэкэнда, и ваш код должен работатьотлично.

если есть сомнения, прокомментируйте.

...