【问题标题】:Symfony form validationSymfony 表单验证
【发布时间】:2011-01-27 20:52:18
【问题描述】:
//为登录创建一个sfForm $this->form = new sfForm(); $this->form->setWidgets(array( 'email' => new sfWidgetFormInputText(array('default' => 'me@example.com')), '密码' => 新的 sfWidgetFormInputPassword() ) ); //TODO: sfValidatorRegex 上的密码! $this->form->setValidators(数组( '电子邮件' => 新的 sfValidatorEmail(), '密码' => 新的 sfValidatorString(数组( 'min_length' => 8, 'max_length' => 255), 大批( 'min_length' => '密码太短。至少需要 8 个字符。') )));

然后在我检查提交参数的请求后

if($this->form->isValid(){ 登录用户(); }

无论我输入多短的密码或伪造的电子邮件,它都会失败。

【问题讨论】:

    标签: symfony1


    【解决方案1】:

    您没有将帖子数据绑定到表单。

    你应该把你的表格放在一个单独的文件中,我假设你把它放在lib/form/LoginForm.class.php

    在表单的configure() 方法中创建名称格式:$this->widgetSchema->setNameFormat("login[%s]")

    您的操作代码:

    $this->form = new LoginForm();
    if ($request->isMethod("post")) {
      $this->form->bind($request->getParameter("login"));
      if ($this->form->isValid()) {
        //whatever
      }
    }
    

    在从头开始创建一个身份验证和授权系统之前,先看看它事实上的 symfony 标准:sfDoctrineGuardPlugin。它还有一个推进版本,称为sfGuardPlugin

    【讨论】:

    • 谢谢你的回答,我试试看。
    • 我认为身份验证和授权已经内置在 symfony 中。授权在security.yml和settings.yml中设置?身份验证是 $getUser->setAuthenticated。我创建的只是登录和注销,用于设置和取消设置“已验证”。然后我在 settings.yml 和 security.yml 中设置要授权的内容。这个插件有什么不同?我阅读了自述文件,但没有比安装更多的文档。谢谢。
    • 内置了一个基本系统,例如管理当前会话的凭据或身份验证。该插件提供了一种标准的用户管理方式——用户、组和存储在数据库中的凭据。
    猜你喜欢
    • 2015-01-23
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多