Symfony: embedRelation () контролирует параметры для вложения нескольких уровней отношений - PullRequest
1 голос
/ 27 мая 2010

Я пытаюсь установить некоторые условные операторы для вложенных экземпляров embedRelation () и не могу найти способ передать какой-либо параметр во второй embedRelation.

У меня есть "Таблица отношений Measure-> Page-> Question ", и я хотел бы иметь возможность выбрать, отображать или нет таблицу Вопросов.Например, скажем, у меня есть две страницы «успеха», page1Success.php и page2Success.php.На странице 1 я хотел бы отобразить «Измерение-> Страница-> Вопрос», а на странице 2 я хотел бы отобразить «Измерение-> Страница», но мне нужен способ передать «параметр» в PageForm.class.php файл, чтобы принять такое решение.В моем файле actions.class.php есть что-то вроде этого:


// actions.class.php
$this->form = new measureForm($measure, array('option'=>$option));

для передачи параметра в «Страницу», но передача этого параметра через «Страницу» в «Вопрос» не работает.

Мой файл measureForm.class.php содержит в себе embedRelation, который зависит от "option":


// measureForm.class.php
if ($this->getOption('option') == "page_1") {
    $this->embedRelation('Page');
}

, и это то, что я хотел бы сделать в моем файле pageForm.class.php:


// pageForm.class.php
if ($this->getOption('option') == "page_1") { // Or != "page_2", or whatever
    $this->embedRelation('Question');
}

Я не могу найти способ сделать это.Есть идеи?

Есть ли предпочтительный способ выполнения операций такого типа в Symfony, возможно, без embedRelation?

Спасибо, -Trevor

По запросу, вот мой schema.yml:


# schema.yml
Measure:
  connection: doctrine
  tableName: measure
  columns:
    _kp_mid:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    description:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    frequency:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
    Page:
      local: _kp_mid
      foreign: _kf_mid
      type: many
Page:
  connection: doctrine
  tableName: page
  columns:
    _kp_pid:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    _kf_mid:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    next:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    number:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    previous:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
    Measure:
      local: _kf_mid
      foreign: _kp_mid
      type: one
    Question:
      local: _kp_pid
      foreign: _kf_pid
      type: many
Question:
  connection: doctrine
  tableName: question
  columns:
    _kp_qid:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    _kf_pid:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    text:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    type:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
    Page:
      local: _kf_pid
      foreign: _kp_pid
      type: one

1 Ответ

0 голосов
/ 08 июня 2010

Я решил вместо этого использовать embedForm (). В итоге это были некоторые команды Doctrine_Query :: create () -> select () ... и Doctrine :: getTable, за которыми следовали некоторые циклы foreach и операторы embedForm. Так много для embedRelation!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...