【问题标题】:How to clear Phalcon 2.0 form element values如何清除 Phalcon 2.0 表单元素值
【发布时间】:2016-05-21 15:59:07
【问题描述】:

编辑:这个问题是针对旧版本的 phalcon 的。 Phalcon 现在有 3.1 版本,这个问题似乎已经修复。

我有以下控制器操作来登录用户。

public function signinAction()
{
    $form = new SigninForm;
    if ($this->security->checkToken())
    {
        try
        {
            $this->auth->signin($form);
        } catch (Exception $e)
        {
            $this->flash->error($e->getMessage());
        }
    }

    $form->clear();
    $form->get('password')->clear();
    \Phalcon\Tag::resetInput();
    $this->view->form = $form;
}

上面的clear 方法不起作用,我的密码字段重新填充了用户输入。

编辑:我正在使用 Phalcon 2.0.10

【问题讨论】:

    标签: php phalcon


    【解决方案1】:

    我昨天也遇到了同样的问题。 在我的情况下令人惊讶$form = new RegistrationFrom($user);没有帮助。

    结果是,如果您执行$user->setPassword('');(假设您已将实体绑定到表单),它将清除该值,但如果您将其设置为 null,则不会清除它,而是显示最初绑定到表单的值。

    【讨论】:

      【解决方案2】:

      根据文档说:

      public clear() 继承自 Phalcon\Forms\Element 将表单中的每个元素清除为其默认值

      我假设你没有声明一个字段的默认值。

      请务必为该表单元素定义一个默认值,例如:

      use \Phalcon\Forms\Element\Password;
      
      class SigninForm extends ... {
      
          // ...
      
          $passwordField = new Password('password');
          $passwordField->setDefault('');
      
          // ...
      
          $this->add($passwordField);
      

      在定义正确的字段默认值后,调用 clear() 方法应该开始按预期工作。

      【讨论】:

        【解决方案3】:
        $form->getElements()['password']->setAttribute('values' , '' );
        

        【讨论】:

          【解决方案4】:

          3.0.x 分支中修复。

          git clone git@github.com:phalcon/cphalcon.git
          cd cphalcon
          git checkout 3.0.x
          
          zephir fullclean
          zephir build
          

          参考:

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-19
            • 2018-11-08
            • 1970-01-01
            • 2011-03-29
            • 1970-01-01
            相关资源
            最近更新 更多