我正在使用十月 CMS,但在延迟绑定方面遇到了一些问题。
我有两个表:products 和 product_images。我将后端表单分成两个选项卡,一个用于产品详细信息,一个用于产品图片:
我正确设置了我的关系,并使用以下代码(放置在部分代码中)来呈现产品图像列表:
<?= $this->relationRender('product_images'); ?>
图像选项卡如下所示:
当我尝试创建新图像时会出现问题。从图像模式中保存图像时,出现以下异常:
我明白为什么会违反约束:主记录尚未保存,因此图像记录没有可引用的 id。换句话说,产品图像无法与产品相关联,因为产品尚不存在。
关于延迟绑定的 OctoberCMS文档暗示了一个解决方案。但文件还指出,
后端表单行为自动支持延迟绑定
事实上,我还没有明确编写任何后端表单处理代码。因此,即使我想遵循有关延迟绑定的说明,我也不知道该放在哪里。有什么建议么?
更新:
在我的 config_relations.yaml 文件中,我将 deferredBinding 设置为 true,但没有任何区别:
product_images:
label: Image
deferredBinding: true
我的产品控制器看起来像:
class Products extends \Backend\Classes\Controller
{
public $implement = [
'Backend.Behaviors.FormController',
'Backend.Behaviors.ListController',
'Backend.Behaviors.RelationController'
];
public $formConfig = 'config_form.yaml';
public $listConfig = 'config_list.yaml';
public $relationConfig = 'config_relation.yaml';
public function __construct()
{
parent::__construct();
BackendMenu::setContext('MyPlugin.Products', 'products');
}
public function index()
{
$this->makeLists();
$this->makeView('index');
}
我没有 product_images 控制器。我不确定为什么。是这个问题吗?