У меня есть тип страницы "класс Test расширяет страницу" и много 'TestBlocks' => 'TestBlock', затем пользователи CMS вводят новые данные в поля на серверной части CMS, и мне нужно получить эти значения из "класс TestBlock расширяет DataObject" и создать с ними форму. По сути, эти данные становятся вопросом, но я не уверен, как правильно поместить их в свой тестовый контроллер. Когда я пытаюсь использовать метод get для dataobect, он возвращает все значения со всех страниц из типа pagetype вместо этого кода конкретной страницы ниже:
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
}
}
что, если у вас есть внутри TestBlock: static $ has_many = array ('TestBlocks2' => 'TestBlock2'); как бы вы получили их много, если бы они вложились дальше? $ this-> TestBlocks () -> TestBlocks2 ();