0

我的管理生成器有问题。页表有列sf_guard_user_idgenerator.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"

但为什么?

4

2 回答 2

3

显示用户名是因为_toString()sfGuardUser返回用户名。我猜从simplePageto的相关名称sfGuardUsersfGuardUser

但是当你只指定 时salt,生成器会查找是否simplePages有这样的属性。管理员生成器不知道您的意思是saltsfGuardUser应该怎么做?)。


您可以使用部分字段来显示该值。因此,您必须在 ( ) 前指定带有下划线_salt的字段,例如:

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()方法,但我想您知道如何从您的页面模型访问关联的用户。

于 2010-02-08T22:11:49.947 回答
0

管理员生成器无法使用默认配置深入研究相关的对象属性。

您的 sfGuardUser 字段正确显示的原因是,当 DoctrinegetSfGuardUser被告知两个对象相关时,Doctrine 在您的“页面”类中定义了一个方法,并且管理生成器调用该函数来显示其列(技术上调用 __toString() 方法方法返回的结果 'sfGuardUser' 对象)。

要获取对象相关模型之一的属性,您可以在页面对象中定义自定义 getter:

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, ...]
于 2010-02-08T22:12:13.863 回答