Фильтровать объект данных по идентификатору страницы SilvertStripe3

У меня есть тип страницы "класс 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;
}
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать $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 ();

Zygimantas 13.06.2018 17:48

Другие вопросы по теме