Получение связанных данных в Symfony Admin Generator - PullRequest
0 голосов
/ 08 февраля 2010

У меня проблема с администратором администратора. Таблица страниц имеет столбец sf_guard_user_id. Остальная часть таблицы выглядит как эта часть generator.yml в строке дисплея,

list:
  title: Pages
  display:      [=title, sfGuardUser, views, state, privacy, created_at, updated_at]
  sort:         [created_at, desc]
  fields:
    sfGuardUser: { label: Author }
    created_at:  { label: Published, date_format: dd.MM.y }
    updated_at:  { label: Updated, date_format: dd.MM.y }
  table_method: retrieveUserList

Теперь sf_guard_user_id заменен, и имя пользователя не отображается. Не поймите меня неправильно, это прекрасно работает. Но как я могу получить другие переменные из отношения sfGuarsUser? Когда я только добавляю соль или другую переменную для отображения, я получаю это,

Unknown record property / related component "salt" on "simplePage"

Но почему?

Ответы [ 2 ]

3 голосов
/ 09 февраля 2010

Имя пользователя отображается, потому что _toString() класса sfGuardUser возвращает имя пользователя. И я предполагаю, что связанное имя от simplePage до sfGuardUser равно sfGuardUser.

Но когда вы указываете только salt, генератор проверяет, есть ли у simplePages такое свойство или нет. Генератор администратора не знает, что вы имеете в виду salt поле sfGuardUser (как это должно быть?).


Вы можете использовать частичные поля для отображения этого значения. Поэтому вы должны указать поле с подчеркиванием перед (_salt), например ::1010 *

display:      [=title, sfGuardUser, _salt, views, state, privacy, created_at, updated_at]

Выход для _salt определяется файлом modules/<your_module_name_here>/templates/_salt.php.

В этом файле у вас есть доступ к текущему объекту через переменную, названную именем класса вашей модели ($simple_page или $simplePage в вашем случае).

Таким образом, вы можете поместить следующий код в _salt.php:

<?php echo $simple_page->getGuardUser()->getSalt(); ?>

Я не уверен в методе getGuardUser(), но, думаю, вы знаете, как получить доступ к связанному пользователю из вашей модели страницы.

0 голосов
/ 09 февраля 2010

Генератор администратора не может вникать в свойства связанных объектов с конфигурацией по умолчанию.

Причина, по которой ваше поле sfGuardUser отображается правильно, заключается в том, что Doctrine определила метод getSfGuardUser в вашем классе 'page', когда ему сказали, что два объекта связаны, и генератор администратора вызывает эту функцию для отображения своего столбца (технически вызывающий метод __toString () в результирующем объекте sfGuardUser, возвращаемом методом).

Чтобы получить свойство одной из связанных моделей вашего объекта, вы можете определить пользовательский метод получения в вашем объекте страницы:

public function getSfGuardUserSalt() {
  return $this['sfGuardUser']['salt'];
}

, а затем сослаться на это в вашем generator.yml:

display: [title, sfGuardUser, sfGuardUserSalt, ...]

или создайте частичное для обработки вашего пользовательского рендеринга:

модули / страницы / шаблоны / _sfGuardUser.php:

<?php echo $page['sfGuardUser']['name']; ?><br />
<?php echo $page['sfGuardUser']['salt']; ?>

, а затем включите его в файл generator.yml с нижним подчеркиванием:

display: [title, _sfGuardUser, views, ...]
...