Php 在symfony表单中,我如何验证查询db的字段(即密码)是否正确?
新手问题 我在symfony中创建了一个非常简单的LoginForm类。它检查用户是否在字段中插入用户名和密码,并按预期工作Php 在symfony表单中,我如何验证查询db的字段(即密码)是否正确?,php,symfony1,validation,symfony-forms,Php,Symfony1,Validation,Symfony Forms,新手问题 我在symfony中创建了一个非常简单的LoginForm类。它检查用户是否在字段中插入用户名和密码,并按预期工作 // UserLoginForm :: configure() $this->setWidgets(array( 'username' => new sfWidgetFormInputText(), 'password' => new sfWidgetFormInputPassword(), )); $this->setValidator
// UserLoginForm :: configure()
$this->setWidgets(array(
'username' => new sfWidgetFormInputText(),
'password' => new sfWidgetFormInputPassword(),
));
$this->setValidators(array(
'username' => new sfValidatorString(array('required' => true),
'password' => new sfValidatorString(array('required' => true)
));
// Action :: executeLogin()
$this->loginForm = new UserLoginForm();
if ($request->isMethod('post')) {
$params = $request->getParameter('login');
$this->loginForm->bind($request->getParameter('login'));
if ($this->loginForm->isValid()) {
// ... more code
}
}
现在我试图检查数据库中是否存在用户名字段,如果它不存在,我想使表单无效。密码也一样:如果用户名+密码对不存在,但具有不同的消息
我试图通过两种可能的方式找到解决方案:
在动作中:
- 查询数据库
- 检查用户名
- 使表单用户名字段无效(我希望在生成的HTML中显示错误消息)
- 用户名+密码检查也一样
- 向setValidator()添加一些内容
- 或者添加一个调用查询模型的私有函数的后验证器
其他可能性?我认为查看的验证程序代码对您非常有用。他们创建了后验证器,然后。即使您不想使用sfDoctrineGuardPlugin(如果您使用的是spreep,则使用sfGuardPlugin),它的代码也是一个很有价值的灵感来源 因此,基本上我必须创建一个访问数据库的自定义验证器,并将其设置为表单类中的post验证器。只需查看链接,并执行相同的操作。(或者只使用sfGuardPlugin!)