我是新手,我有很长一段时间的问题,我有以下代码。
<?php
class RegistroUsuariosForm extends sfForm {
public function configure() {
$this->setWidgets(array(
'password1' => new sfWidgetFormInputPassword(),
'password2' => new sfWidgetFormInputPassword(),
'avatar' => new sfWidgetFormInputFile(),
));
$this->widgetSchema->setLabels(array(
'password1' => 'Password',
'password2' => 'Repetir Contraseña',
'avatar' => 'Imagen a mostrar'
));
$this->widgetSchema->setNameFormat('RegUsuario[%s]');
$this->validatorSchema->setPostValidator(new sfValidatorSchemaCompare('password1', '==', 'password2',
array(),
array('invalid' => 'Las contraseñas no son iguales')));
$this->setValidators(array(
'password1' => new sfValidatorString(array('min_length' => 4),
array('required' => 'Campo obligatorio',
'min_length' => 'Minimo %min_length% caracteres.',)),
'password2' => new sfValidatorString(array('min_length' => 4),
array('required' => 'Campo obligatorio',
'min_length' => 'Minimo %min_length% caracteres.',)),
'avatar' => new sfValidatorFile(
array(
'required' => false,
'max_size' => (1048576 * 2),
'mime_types' => 'web_images',
),
array(
'required' => 'Campo obligatorio',
'max_size' => 'El archivo es muy grande (máximo de 2Mb).',
'mime_types' => 'El tipo de archivo es invalido (%mime_type%).',
'partial' => 'El archivo subido fue sólo parcialmente cargado.',
'no_tmp_dir' => 'Falta la carpeta temporal.',
'cant_write' => 'No se pudo guardar el archivo en el servidor.',
'extension' => 'De carga del archivo se detuvo, por extensión.'
)),
));
}
}
public function executeActivarinvitacion(sfWebRequest $request) {
$key = $request->getParameter('key');
$this->formulario = new RegistroUsuariosForm();
if (($dato = Invitaciones::TraerDatosDeInvitacion($key))) {
$this->key = $key;
if ($request->isMethod('post')) {
$RegUsuario = $request->getParameter('RegUsuario');
$Avatar = $request->getFiles('RegUsuario');
$this->formulario = new RegistroUsuariosForm();
$this->formulario->bind($RegUsuario, $Avatar);
if ($this->formulario->isValid()) {
echo $RegUsuario['password1'];
echo ' - '.$RegUsuario['password2'];
exit();
}
}
} else {
$this->forward404();
}
$this->usuario = $dato['usuario'];
$this->correo = $dato['correo'];
}
验证密码不起作用,有人知道吗?
答案 0 :(得分:3)
sfForm->setValidators()
在内部重新创建一个新的validatorSchema
,因此您之前设置的表单验证程序已被清除。只需将$this->validatorSchema->setPostValidator()
的呼叫置于其余部分之下即可。