Symfony: как бы вы изменили «notnull: true» в схеме плагина? - PullRequest
0 голосов
/ 01 апреля 2010

Модель sfGuardUser sfDoctrineGuardPlugin определяется следующим образом:

sfGuardUser:
  actAs: [Timestampable]
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    username:
      type: string(128)
      notnull: true
      unique: true

Как вы можете видеть, 'username' имеет функцию "notnull: true". Теперь я хочу создать форму регистрации, которая использует не «имя пользователя», а адрес электронной почты адрес пользователя.

Когда пользователь хочет зарегистрироваться, он показывает это:

Ошибка проверки в классе sfGuardUser 1 поле имело ошибку проверки: * 1 валидатор не прошел по имени пользователя (notnull)

Есть идеи?

Хави

Ответы [ 4 ]

1 голос
/ 07 июля 2010

В symfony 1.4 конечные классы генерируются в основной каталог lib, чтобы вы могли изменять их в проекте.

Поэтому в файле lib / model / doctrine / sfDoctrineGuardPlugin / sfGuardUser.class.php вы можете переписать метод setUp (), который отвечает за определение модели:

class sfGuardUser extends PluginsfGuardUser
{
  public function setUp()
  {
    parent::setUp();

    $this->hasColumn('username', 'string', 128, array(
      'type' => 'string',
      'notnull' => false,
      'unique' => true,
      'length' => 128,
    ));  
  }
}
1 голос
/ 12 апреля 2010

Я наконец перезаписал схему другой схемой с надписью «notnull: false». Это возможно с sf1.3.

0 голосов
/ 01 апреля 2010

вы можете исправить lib/form/doctrine/sfGuardPlugin/sfGuardUserForm.class.php следующим образом:

class sfGuardUserForm extends PluginsfGuardUserForm
{
  protected function doUpdateObject($values)
  {
    $this->getObject()->set('username', $values['email']);

    parent::doUpdateObject($values);
  }
}
0 голосов
/ 01 апреля 2010

Некоторые поля схемы плагина легко настраиваются без изменения кода, в то время как другие выдают ошибку.

Вы можете попробовать удалить "notnull: true" из поля имени пользователя в схеме, но это может привести к ошибке (не пробовал) В этом случае вы можете настроить код плагина (= головная боль) или убедиться, что значение всегда сохраняется в этом поле, например, ноль. Таким образом, оно никогда не будет нулевым.

...