symfony:使用generator.yml,是否有任何解决方案只隐藏用户的字段并显示给Admin

时间:2013-03-25 13:52:36

标签: symfony1 symfony-1.4

我使用symfony 1.4的“admin generator”为我的项目构建了一个beckend,所以我可以访问管理员和其他成员,如用户(角色)......

我希望在后端的成员列表中隐藏密码,然后当我像Admin一样登录时(在DB:sf_guard_user中is_super_admin = 1)这样我就可以看到密码但是当有人像用户一样登录时他看不到同一个字段(DB中的is_super_admin = 0:sf_guard_user)。

我问他们是否使用role和generator.yml或任何其他解决方案隐藏字段的任何解决方案?

3 个答案:

答案 0 :(得分:2)

是的,你可以这样做:

# generator.yml
generator:
  class: fdDoctrineGenerator
  param:
    model_class:           sfGuardUser
    theme:                 admin
    non_verbose_templates: true
    with_show:             false
    singular:              ~
    plural:                ~
    route_prefix:          user
    with_doctrine_route:   true
    actions_base_class:    sfActions

    config:
      actions: ~
      fields:
        password:
          credentials: [super_admin]
      list:
        display: [=username, password]
      filter   ~
      form:    ~
      edit:    ~
      new:     ~

如果您的管理员使用is_super_admin == true,则可以使用未分配给任何用户的任何凭据。

答案 1 :(得分:0)

我认为只使用generator.yml选项可以选择执行此操作。

我要做的是创建列出用户的两个不同操作,一个用密码,一个没用。然后,使用security.yml,您可以限制使用密码访问列表,这样只有超级管理员才能访问它。

如果您希望只使用一个URL访问此列表。我将创建第三个操作,它将检查用户的权限,将他转发到其中一个列表(此操作必须写为“正常”操作,未在generator.yml中定义)。

答案 2 :(得分:0)

在generator.yml中包含该字段。

在该字段的module / templates / _form_field.php中创建一个部分。

在部分表单字段中传递条件:

  <?php if ($sf_user->hasCredential('admin')): ?> 

      <?php echo $MyObject->getMyFormField(); ?>  

  <?php endif; ?>

应该这样做。