【问题标题】:admin generator yaml: link to another module管理员生成器 yaml:链接到另一个模块
【发布时间】:2012-09-24 08:05:07
【问题描述】:

如何在 Symfony 管理生成器 Yaml 中生成指向另一个模块的链接? 我正在尝试从 sfGuardUser 模块(用户列表)链接到 profile/viewProfilesDetails 但它总是指向 sfGuardUser/viewProfilesDetails

我的 generator.yml :

(...)
  list:
    title:   Użytkownicy
    display: [=username, _name, created_at, last_login]
    actions: {}
    batch_actions: {}
    object_actions:
      _edit: ~
      signIn:
        label:  Zaloguj jako
        action: signIn
      viewProfiles:
        label:  Profile
        module: profiles
        action: viewProfilesDetails
(...)

【问题讨论】:

    标签: symfony1 symfony-1.4 admin-generator


    【解决方案1】:

    我认为您不能在此配置中指定模块,而只能指定来自同一模块的操作。

    我个人就是这样做的。

    generator.yml

    object_actions:
      _edit: ~
      _delete: ~
      viewItems: { label: View items, action: viewItems }
    

    然后在generator.yml的同一个模块中,我创建一个动作:

    public function executeViewItems($request)
    {
      $this->redirect($this->generateUrl('items'));
    }
    

    它会生成一个名为查看项目的链接,例如/blog/158/viewItems,它重定向到/items(即路由@items)。

    编辑:

    事实上,您不能指定其他模块。

    模板_list_td_actions.php 显示list.object_actions。这是有趣的部分:

    <?php else: ?>
        <li class="sf_admin_action_<?php echo $params['class_suffix'] ?>">
          <?php echo $this->addCredentialCondition($this->getLinkToAction($name, $params, true), $params) ?>
        </li>
    <?php endif; ?>
    

    它通过$this-&gt;getModuleName()调用使用当前模块的getLinkToAction

    return '[?php echo link_to(
      __(\''.$params['label'].'\', array(), \''.$this->getI18nCatalogue().'\'), 
      \''.$this->getModuleName().'/'.$action.$url_params.', 
      '.$this->asPhp($params['params']).'
    ) ?]';
    

    【讨论】:

    • 这看起来是可以接受的解决方法,但我觉得很奇怪你不能直接链接到另一个模块......