Вместо этих строк:
$user=new sfGuardUser();
$user->email='email@server.com';
$user->password='password';
напишите это как
$user = new sfGuardUser();
$user->setEmail('email@server.com');
$user->setPassword('password');
разница в том, что использование общедоступных методов set / get - лучший дизайн, а не просто установка объектапараметры.Важно то, что прямо сейчас вы полагаетесь на sfGuardPlugin, который переопределяет нормальное поведение, и установка пароля - это не просто установка значения, это гораздо более сложная задача (генерация соли, получение алгоритма хеширования из конфигурации и т. Д.,Вы можете проверить это здесь http://trac.symfony -project.org / browser / plugins / sfDoctrineGuardPlugin / branch / 1.3 / lib / model / doctrine / PluginsfGuardUser.class.php начиная со строки 33).
Если вы позвоните
$user->save();
, это сохранит данные в таблице sf_guard_user.Чтобы создать профиль или в вашем случае строку «user» в базе данных, создайте ее как объект sfGuardUser (если ваша таблица «user» определена в вашем schema.yml и сгенерированы файлы модели)
$profile = new User();
$profile->setName('blabla');
$profile->setLastname('blablabla');
Чтобы связать sfGuardUser и объекты профиля, вам необходимо решить, как реализовать это соотношение 1: 1.Например, вы можете добавить sfGuardUserId в профиль:
$profile->setGuardUserId($user->getId());
$profile->save();
Если вы хотите проверить, как я сделал то же самое здесь: http://code.google.com/p/sc2-cup-app/source/browse/trunk/apps/frontend/modules/sfGuardAuth/actions/registerAction.class.php