отключить макет для sfDoctrineGuardPlugin в Symfony - PullRequest
1 голос
/ 02 марта 2010

Как я могу запретить упомянутой форме входа в плагин использовать макет по умолчанию? Я знаю этот вопрос , но этот ответ не работает для меня. Для начала, в модулях dir нет модуля входа, вероятно, плагины обрабатывают его по-другому, я не знаю. Просто учу симфонию. Заранее спасибо:)

Ответы [ 2 ]

1 голос
/ 17 августа 2010

На данный момент невозможно настроить пользовательский макет для некоторых действий 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);
    }
}
1 голос
/ 02 марта 2010

Если вы просто хотите установить другой макет, вам нужно добавить модуль (просто создайте его вручную) с именем "sfGuardAuth". Для этого в каталоге / config / измените макет в view.yml, как и для любого другого модуля. Это объясняется в:

http://www.symfony -project.org / плагины / sfDoctrineGuardPlugin / 4_0_0

... в разделе «Настройка действий модуля sfGuardAuth».

Однако, если вы хотите «встроить» форму входа в систему на другой существующей странице, вы можете превратить имя входа в компонент - это означает, что он использует существующий макет страницы, на которой он находится.

Действие компонента в пользовательском модуле:

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

... который, как и все компоненты, использует частичное в качестве своего представления. У частичного теперь есть доступ к форме $ как стандартная страница входа. Частичное для этого будет называться "_signinLightbox".

Надеюсь, это поможет.

...