按页面 id SilverStripe 3 过滤数据对象
Filter dataobject by page id SilvertStripe3
我有一个页面类型 "class Test extends Page" 它有很多 'TestBlocks' => 'TestBlock',然后 CMS 用户将新数据输入到 CMS 后端的字段中,我需要的是从 "class TestBlock extends DataObject" 获取这些值并使用它们创建一个表单。基本上该数据成为问题,但我不确定如何以正确的方式将其放入我的测试控制器中。当我尝试 dataobect 的 get 方法时,它 returns 来自页面类型的所有页面的所有值,而不是下面的特定页面代码:
class Test_Controller extends Page_Controller
{
private static $allowed_actions = array(
'TestForm',
);
public function TestForm()
{
$players = MultiQuestion::get();
echo $players->QuestionText;
$array = [];
foreach ($players as $player) {
$array[] = TextField::create($player->QuestionText)->setFieldHolderTemplate('Field_Holder');
}
$fieldGroup1 = CompositeField::create(
$array
)->setName('FieldGroup1');
$fields = FieldList::create($fieldGroup1);
$actions = FieldList::create(
FormAction::create('submit', 'Get Results')->addExtraClass('get_results')
);
$form = Form::create($this, __function__, $fields, $actions);
return $form;
}
}
您可以使用 $testBlocks = $this->TestBlocks()
假设您已正确设置关系。
TestBlock.php
class TestBlock extends DataObject {
static $has_one = array(
'Test' => 'Test'
);
}
Test.php
class Test extends Page {
static $has_many = array(
'TestBlocks' => 'TestBlock'
);
}
class Test_Controller extends Page_Controller {
public function TestForm() {
$testBlocks = $this->TestBlocks();
//other code
}
}
我有一个页面类型 "class Test extends Page" 它有很多 'TestBlocks' => 'TestBlock',然后 CMS 用户将新数据输入到 CMS 后端的字段中,我需要的是从 "class TestBlock extends DataObject" 获取这些值并使用它们创建一个表单。基本上该数据成为问题,但我不确定如何以正确的方式将其放入我的测试控制器中。当我尝试 dataobect 的 get 方法时,它 returns 来自页面类型的所有页面的所有值,而不是下面的特定页面代码:
class Test_Controller extends Page_Controller
{
private static $allowed_actions = array(
'TestForm',
);
public function TestForm()
{
$players = MultiQuestion::get();
echo $players->QuestionText;
$array = [];
foreach ($players as $player) {
$array[] = TextField::create($player->QuestionText)->setFieldHolderTemplate('Field_Holder');
}
$fieldGroup1 = CompositeField::create(
$array
)->setName('FieldGroup1');
$fields = FieldList::create($fieldGroup1);
$actions = FieldList::create(
FormAction::create('submit', 'Get Results')->addExtraClass('get_results')
);
$form = Form::create($this, __function__, $fields, $actions);
return $form;
}
}
您可以使用 $testBlocks = $this->TestBlocks()
假设您已正确设置关系。
TestBlock.php
class TestBlock extends DataObject {
static $has_one = array(
'Test' => 'Test'
);
}
Test.php
class Test extends Page {
static $has_many = array(
'TestBlocks' => 'TestBlock'
);
}
class Test_Controller extends Page_Controller {
public function TestForm() {
$testBlocks = $this->TestBlocks();
//other code
}
}