كيفية تعيين القيمة الافتراضية إلى حقل إضافي في نموذج Symfony

StackOverflow https://stackoverflow.com/questions/2217924

سؤال

ما أحتاج إليه هو تخصيص UserForm الافتراضي الخاص بي عن طريق إضافة حقل "PasswordAgain" وقم بتعيين القيمة على الحقل الجديد يساوي حقل "كلمة المرور". رمز بلدي:

class UserForm extends BaseUserForm
{
 public function configure()
 {

$this->widgetSchema['password'] = new sfWidgetFormInputPassword();
$this->widgetSchema['passwordagain'] = new sfWidgetFormInputPassword();

$this->validatorSchema['password'] = new sfValidatorString();
$this->validatorSchema['passwordagain'] = new sfValidatorString();

$this->getValidatorSchema()->setPostValidator(
  new sfValidatorSchemaCompare(
    'password',
    sfValidatorSchemaCompare::EQUAL,
    'passwordagain',
    array(),
    array('invalid' => 'Passwords don\'t match')
));

$this->setDefault('passwordagain', $this->getObject()->getPassword());

$this->useFields(array('username', 'password', 'passwordagain'));

} }

طريقة setDefault لا يبدو أن هناك يعمل. ربما يعمل فقط للمستخدمين الجدد، ولكن هذا ليس ما أبحث عنه هنا.

شكرا، رادو.

ملاحظة: راجع للشغل ... أستخدم Symfony 1.4 مع الدفع

هل كانت مفيدة؟

المحلول

السبب في أن الافتراضي الخاص بك لا يعمل هو أنك تستخدم sfWidgetFormInputPassword القطعة.

أفضل الممارسات هي أبدا ملء حقل كلمة المرور أبدا، وهذا هو ما sfWidgetFormInputPassword القطعة تفعل لك.

إذا كنت ترغب في الذهاب ضد أفضل الممارسات، فقم بما يلي،

$this->widgetSchema['passwordagain']->setOption('always_render_empty', false);

ومع ذلك، فإنني نوصي بجدية لا تفعل ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top