OctoberCMS:以关系形式访问父模型

OctoberCMS: Access parent model in relation form

我正在后端创建一个界面,其中父模型具有 belongsToMany 关系,该关系通过关系管理器小部件处理。

创建相关模型时,我需要能够访问父表单中模型的模型(和关系),以便正确填充子表单。

不幸的是我找不到如何做到这一点,有人可以解释一下这个问题吗?

如果我没理解错的话。我想你正在寻找关系经理。

这是 the documents 中您应该查看的部分。

“在任何页面上管理关系之前,必须首先通过调用 initRelation 方法在控制器中初始化目标模型。”

$this->initRelation($post);

Check this awesome video。请注意,它是使用 OctoberCMS v1 完成的,但除了视觉上看起来它应该仍然可以正常工作。

通过扩展控制器中的关系管理器小部件并在小部件的配置中传递父模型,使其在子表单中可访问,设法找到一种将所需数据传递到关系管理器中的表单的方法.

代码如下:

public function relationExtendManageWidget($widget, $field, $model)
{
    if($field === 'MyRelationName'
        && property_exists($widget->config, 'context')
    ) {
        $widget->config->parentModel = $model;
       
    }
}

您也可以像这样将值直接传递给子模型:

public function relationExtendManageWidget($widget, $field, $model)
{
    if($field === 'MyRelationName'
        && property_exists($widget->config, 'context')
        && $widget->config->context === 'create'
    ) {
        $widget->config->model->customer_id = $model->customer_id;
       
    }
}