كيفية تعيين القيمة الافتراضية إلى حقل إضافي في نموذج Symfony
-
19-09-2019 - |
سؤال
ما أحتاج إليه هو تخصيص 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);
ومع ذلك، فإنني نوصي بجدية لا تفعل ذلك.
لا تنتمي إلى StackOverflow