Виджет "password_again" не существует - PullRequest
0 голосов
/ 05 июля 2010

Получил эту ошибку: виджет "password_again" не существует.

Не могу понять, почему он вдруг начал появляться.Я использую файл генератора по умолчанию, поставляемый с плагином sfDoctrineGuard

plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/config/generator.yml

generator:
class: sfDoctrineGenerator
param:
  model_class:           sfGuardUser
  theme:                 admin
  non_verbose_templates: true
  with_show:             false
  singular:              ~
  plural:                ~
  route_prefix:          sf_guard_user
  with_doctrine_route:   true

config:
  fields:
    password_again: { label: "Password (again)" }

  list:
    title: User list
    display: [=username, created_at, updated_at, last_login]

  form:
    class: sfGuardUserAdminForm
    display:
      "NONE": [username, password, password_again]
      "Permissions and groups": [is_active, is_super_admin, groups_list, permissions_list]

  edit:
    title: Editing User "%%username%%"

  new:
    title: New User

Единственная другая ссылка на поле password_again находится здесь:

plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php

class BasesfGuardUserAdminForm extends BasesfGuardUserForm
{
  /**
   * @see sfForm
   */
  public function setup()
  {
    parent::setup();
    unset(
      $this['last_login'],
      $this['created_at'],
      $this['updated_at'],
      $this['salt'],
      $this['algorithm']
    );

    $this->widgetSchema['groups_list']->setLabel('Groups');
    $this->widgetSchema['permissions_list']->setLabel('Permissions');

    $this->widgetSchema['password'] = new sfWidgetFormInputPassword();
    $this->validatorSchema['password']->setOption('required', false);
    $this->widgetSchema['password_again'] = new sfWidgetFormInputPassword();
    $this->validatorSchema['password_again'] = clone $this->validatorSchema['password'];

    $this->widgetSchema->moveField('password_again', 'after', 'password');

    $this->mergePostValidator(new sfValidatorSchemaCompare('password', sfValidatorSchemaCompare::EQUAL, 'password_again', array(), array('invalid' => 'The two passwords must be the same.')));
  }
}

Который снова не был изменен.Так что я не совсем уверен, что делать дальше, чтобы все заработало.

Есть идеи?

Ответы [ 2 ]

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

Спасибо за ваш комментарий johnwards

Мне удалось это исправить самостоятельно.

По сути, я создал свой собственный класс sfGuardUserAdminForm для переопределения по умолчанию.

В методе configure этого класса я использовал функцию $this->setWidgets(), а не отдельные вызовы $this->setWidget()

0 голосов
/ 11 апреля 2012

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

...