Автоматически генерировать значение поля в sfGuardUser при регистрации - PullRequest
1 голос
/ 23 января 2011

Я создаю проект Symfony 1.4, который использует sfDoctrineGuardPlugin для пользователей / аутентификации.У меня есть поле в моей пользовательской таблице с именем "access_token", которое я хотел бы заполнить автоматически сгенерированным значением при регистрации пользователя.Я вижу, что для регистрации sfGuardRegisterForm используется для проверки.К сожалению, когда я запускаю ./symfony doctrine:build-forms из командной строки, эта форма кажется не расширенной, что означает, что я не могу сгенерировать токен доступа без редактирования плагина.

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

Есть какие-либо предложения / предложения?Будет ли кто-нибудь делать что-то отличное от идей, которые я перечислил здесь?

Редактировать : Я уже создал открытый статический метод для моей sfGuardUser модели с именем generateAccessToken, который возвращаетзначение.Я просто пытаюсь найти лучшее место для вызова этого в коде моего проекта.

1 Ответ

1 голос
/ 24 января 2011

sfDoctrineGuardPlugin не предоставляет функции регистрации пользователей. Вот почему вы должны реализовать это самостоятельно. Итак, в вашем контроллере вы можете заполнить поле так, как это делается с помощью symfony:

class myActions extends sfActions {
    public function executeRegistration(sfWebRequest $request) {
        ...
        $form = new myRegisterForm();
        $form->setDefault('access_token', sfGuardUser::generateAccessToken());
        ...
    }
}

И виджет access_token должен быть экземпляром sfWidgetFormInputHidden. Надеюсь, это поможет.

...