我在没有用户操作的情况下访问子模型中继器字段时遇到问题,我在父模型控制器中使用RelationController这就是我在父控制器中所做的
class WartaRutin extends Controller
{
public $implement = ['Backend\Behaviors\ListController',
'Backend\Behaviors\FormController',
'Backend\Behaviors\RelationController'];
public $listConfig = 'config_list.yaml';
public $formConfig = 'config_form.yaml';
public $relationConfig = 'config_relation.yaml';
public function __construct()
{
parent::__construct();
}
public function formExtendFieldsBefore($form) {
if($form->model instanceof Mismaiti\MyWarta\Models\Baptis){
$iteration8 = $form->fields['peserta']['maxItems'];
if(is_numeric($iteration8) && $iteration8 > 0) {
$emptyFields = [];
while($iteration8 > 0) {
$emptyFields[] = ['anak' => ' '];
$iteration8--;
}
$form->model->peserta = $emptyFields;
}
}
}
}
此子模型字段
fields:
...
peserta:
label: 'Peserta Baptis'
...
maxItems: '4'
...
form:
fields:
anak:
label: 'Nama Anak'
...
ortu:
...
alamatbaptis:
...
此的父模型字段
baptisan:
label: ''
...
type: partial
path: field_baptis
...
这是config_relation.yaml
baptisans:
label: Baptisan
view:
list: $/mismaiti/mywarta/models/baptis/relation_columns.yaml
toolbarButtons: add|create|remove
manage:
form: $/mismaiti/mywarta/models/baptis/relation_fields.yaml
list: $/mismaiti/mywarta/models/baptis/relation_columns.yaml
我在父模型中定义的这种关系
public $belongsToMany = [
'baptisans' => [
Baptis::class,'table' => 'mismaiti_mywarta_rutbaptis'
]
];
子模型中的关系
public $belongsToMany = [
'wartarutin' => [
WartaRutin::class,'table' => 'mismaiti_mywarta_rutbaptis'
]
];
在我使用RelationController之前,这种由@HardikSatasiya共享的方法运行良好,中继器字段根据定义的maxItems自动加载,而无需用户操作。有人能跟我分享一下如何解决这个问题吗?
发布于 2018-06-07 19:55:14
您可以将此代码添加到WartaRutin controller
中,以添加这些空字段
class WartaRutin extends Controller {
...
public function relationExtendManageWidget($widget, $field, $model)
{
// we will do it for this model only
if ($widget->model instanceof \Mismaiti\MyWarta\Models\Baptis) {
// fetch max item
$iteration8 = $widget->fields['peserta']['maxItems'];
// use loop and add those empty fields
if(is_numeric($iteration8) && $iteration8 > 0) {
$emptyFields = [];
while($iteration8 > 0) {
$emptyFields[] = ['anak' => ' '];
$iteration8--;
}
$widget->model->peserta = $emptyFields;
}
}
...
试试这个,它一定会对你有用的
如果有任何疑问,或者如果它不工作,请评论。
https://stackoverflow.com/questions/50711791
复制相似问题