我想知道如何从$ belongs_many_many法案表中自定义这个uploadfield。
代码的一部分......
<?
class MultipleBlock extends DataObject {
private static $db = array(
'Act' => 'Varchar',
private static $many_many = array(
'MultipleBlockColumns' => 'MultipleBlockColumn'
);
}
class MultipleBlockColumn extends DataObject {
static $belongs_many_many = array(
'MultipleBlocks' => 'MultipleBlock'
);
private static $has_one = array(
'Image' => 'Image',
);
$fields->addFieldToTab('Root.Image',$uploadField = new UploadField(
$name = 'Image',
$title = 'Image'
)
);
enter code here
$uploadField->setFolderName('Uploads/Subsite'.Subsite::currentSubsiteID().'/images/'.$var);
}
我尝试过这些方法来获取Act变量,但没有出现:
$var=$this->Parent->MultipleBlocks->Act;
$var=$this->many_many(MultipleBlocks)->Act;
$var=$this->Parent->Act;
有什么想法吗? 提前谢谢!
答案 0 :(得分:0)
如果我正确地阅读了您的代码,那么您无法访问Act
变量的原因是因为您没有迭代MultipleBlocks
关系。如何获取相关Act
的{{1}}变量的示例如下(在您的模板/布局文件中):
MultipleBlocks
在php中,它将是:
<% loop $MultipleBlocks %>
$Act
<% end_loop %>
当您在$multipleBlocks = $this->MultipleBlocks();
foreach($multipleBlocks as $block){
$act = $block->Act;
}
中引用MultipleBlocks
时,它将无法正常工作,因为$this->MultipleBlocks->Act
是一个很多关系所以它实际上是一个MultipleBlocks
而不是一个单独的对象
这是has_many / has_one示例:
DataList
答案 1 :(得分:0)
parent::MultipleBlocks();
要保存到文件夹自定义,有我的代码......它运行得非常好。必须首先创建MultiBlockColumns的ID。
$parent = parent::MultipleBlocks();
$uploadField->setFolderName('Uploads/Subsite'.Subsite::currentSubsiteID().'/images/'.$parent['MultipleBlock']->Act);
就是这样!感谢您提交想法。