Октябрьская CMS: обновление значений полей? - PullRequest
0 голосов
/ 09 марта 2020

В моем плагине, когда я редактирую и сохраняю элемент, некоторые значения поля не обновляются.
Например, поле «updated_at» по-прежнему показывает старое значение DateTime, даже если оно было обновлено в базе данных.
Как я могу обновить sh конкретный c значения поля?
Должен ли я использовать частичные или есть другой способ сделать это?

Ответы [ 2 ]

1 голос
/ 11 марта 2020

При использовании обработчика AJAX в FormController вы можете обновить одно поле в вашей форме, используя следующее:

public function onYourAjaxHandler($recordID)
{
    $model = MyModel::findOrFail($recordID);
    $model->fieldToUpdate = "new value";
    $this->initForm($model);

    $fieldMarkup = $this->formGetWidget()->renderField('fieldToUpdate', ['useContainer' => true]);

    return [
      '#field-id' => $fieldMarkup
    ];
}

Если вам нужно заменить контейнер поля, установите useContainer => false. Если вам нужно сохранить контейнер, установите useContainer => true.

Начиная с версии v452 OctoberCMS, теперь можно напрямую использовать метод formRenderField (), поскольку в него добавлен аргумент «options»:

    $this->formRenderField('fieldToUpdate', ['useContainer'=>false])
0 голосов
/ 10 марта 2020

Хм, вам нужно установить certain attributes/variables вашей модели на achieve, что.

class YourModel extends Model
{   
    // set this to true
    public $timestamps = true;   
}

$ timestamps: если true будет automatically установить create_at и updated_at поля. (убедитесь, что в вашей таблице точно такие же имена столбцов create_at и updated_at )

проверьте ссылку: https://octobercms.com/docs/database/model#standard -properties

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

...