我需要将字段动态添加到关系管理器小部件中。希望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”仅在我创建新关系时出现。如果我更新现有的,则该值为空。我想知道如何为创建和更新表单的动态字段定义值。
感谢您的帮助
答案 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
留空。 [用于现有记录]
如果有任何疑问,请发表评论,并且我不确定您是否没有发布模型的架构(如果发布它们),很难正确地给出答案。