定义通过relationExtendManageWidget()添加的字段的默认值

时间:2018-07-17 16:11:55

标签: octobercms

我需要将字段动态添加到关系管理器小部件中。希望October CMS allow that通过使用RelationExtendManageWidget()方法。

所以,有我的代码:

public function relationExtendManageWidget($widget, $field, $model) {
    $widget->tabs['fields']['_property'] = array(
        'label' => 'Property',
        'span' => 'auto',
        'type' => 'text',
        'tab' => 'Properties',
        'default' => 'test',
    );
}

我的问题是,这里定义的默认值“ test”仅在我创建新关系时出现。如果我更新现有的,则该值为空。我想知道如何为创建和更新表单的动态字段定义值。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这是因为在当前记录中,_property的[from db]值将为empty,因此由表单_proprty创建的字段将获得值blank,因此将显示{{ 1}}

但是对于新记录,它是新记录,因此没有数据库记录可填充其值,并且它会获得默认值bloank

对我来说必须是当前行为

  

但是如果您想更改test,我们可以做类似的事情

behavior
  

但是现在请确保您永远无法保存public function relationExtendManageWidget($widget, $field, $model) { // you can use new array syntex [] in php 7.0 $fieldConfiguration = [ 'label' => 'Property', 'span' => 'auto', 'type' => 'text', 'tab' => 'Properties', ]; // we check record is new or updating if($model->exists && $model->_property == '') { // we are updating record and seems _property field is ''/empty // so we fill it with 'test' $model->_property = 'test'; } else { // record is new $fieldConfiguration['default'] = 'test'; } $widget->tabs['fields']['_property'] = $fieldConfiguration; } 的{​​{1}}字段,因为我们决定将其empty value留空。 [用于现有记录]

如果有任何疑问,请发表评论,并且我不确定您是否没有发布模型的架构(如果发布它们),很难正确地给出答案。