我正在用它自己的控制器构建一个新的单页作曲家,为某些特定用户编辑我的一些专门页面。这些页面已经通过页面类型默认设置了一些默认块。
我想要的只是通过我的新单页编辑表单来编辑内容块的内容。该内容块已在页面类型默认值上预定义。它作为主区域的第一个块放置。
为此,我在我的控制器上做了一个这样的功能
/* $p = the page object that I want to edit */
private function saveData($p){
// get all blocks fromt the Main area
$blocks = $p->getBlocks('Main');
// setup $data with a POST variable 'contentBody'
$data = array('content' => $this->post('contentBody'));
// instantiate block with Content Block type
$bt = BlockType::getByHandle('content');
// try to iterate all the blocks obtained and update only the first block
foreach( $blocks as $b){
$b->update($data);
break;
}
}
我认为这个简单的功能应该足以让它像我想要的那样工作。但显然不是。该$b->update($data)
功能似乎正在更新其页面类型默认值的主块,而不仅仅是我正在编辑的这个特定页面上的这个特定块。所以它会更新我所有包含默认内容块的页面。
那么我怎样才能真正断开该块与它的主默认值。这样我就可以只为这个特定的页面编辑它。内置的concrete5块编辑功能能够断开块。但是我在任何地方都找不到有关如何断开该块的任何线索或文档。我也不知道要挖掘哪些具体的核心文件来找出如何断开它。