laravel - 从父 Controller 访问子模型

标签 laravel octobercms octobercms-plugins october-form-controller

我在访问子模型重复器字段以在没有用户操作的情况下加载时遇到问题,我在父模型 Controller 中使用 RelationController 这就是我在父 Controller 中所做的

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,无需用户操作。 有人可以分享一下如何解决这个问题吗?

最佳答案

您可以将此代码添加到您的 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;
        }
    }

    ...

试试这个,它一定对你有用

如果有任何疑问或不起作用,请发表评论。

关于laravel - 从父 Controller 访问子模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711791/

相关文章:

octobercms - OctoberCMS中的用户表继承

php - Laravel 5 Seeder - 数据库中的多行

php - 删除记录 MethodNotAllowedHttpException

css - 在 October CMS 中链接到图像作为背景图像属性的语法

php - 在 raspbian 8 (raspberry b+) 上使用 composer 安装 october cms

Octobercms:如何翻译Flash消息?

php - 获取帖子的评论、回复和子回复时出现问题

laravel - 如何将 HTML5 自定义 data-* 属性添加到 Laravel 4 Blade 模板?

api - 在 OctoberCMS 中创建 API(Web 服务)

php - 使用带有静态页面插件的前端编辑器