在Symfony中禁用sfDoctrineGuardPlugin的布局

时间:2010-03-02 14:18:54

标签: php symfony1 symfony-1.4

如何使用默认布局阻止上述插件的登录表单?我知道this question,但这个答案对我不起作用。对于初学者来说,模块目录中没有signin模块,可能插件以不同的方式处理它,我不知道。刚学习symfony。在此先感谢:)

2 个答案:

答案 0 :(得分:1)

如果您只想设置不同的布局,则需要添加一个名为“sfGuardAuth”的模块(只需手动创建)。在/ config /目录中,更改view.yml中的布局,就像任何其他模块一样。这在下面解释:

http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin/4_0_0

...在“自定义sfGuardAuth模块操作”部分下。

但是,如果您想在另一个现有页面上“嵌入”您的登录表单,您可以将登录信息转换为组件 - 这意味着它会使用它所在页面的现有布局。

自定义模块中的组件操作:

public function executeSigninLightbox(sfWebRequest $request)
{
    $class = sfConfig::get('app_sf_guard_plugin_signin_form', 'sfGuardFormSignin'); 
    $this->form = new $class();
}

...像所有组件一样使用partial作为其视图。部分现在可以像标准登录页面一样访问$ form。这部分将被称为“_signinLightbox”。

希望有所帮助。

答案 1 :(得分:1)

目前,无法通过自定义sfGuardAuth为某些view.yml操作设置自定义布局 我就这样做了。
这是我的apps/backend/modules/sfGuardAuth/actions/actions.class.php

<?php

require_once(sfConfig::get('sf_plugins_dir').'/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php');

class sfGuardAuthActions extends BasesfGuardAuthActions
{
    public function preExecute()
    {
        $layout = $this->getActionName() == sfConfig::get('sf_login_action') ? 'sfGuardLayout' : $this->getLayout();
        $this->setLayout($layout);
    }
}