如何清除Phalcon 2.0表单元素值

时间:2016-05-21 15:59:08

标签: php phalcon

编辑:这个问题适用于旧版的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

5 个答案:

答案 0 :(得分:1)

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

事实证明,如果你做$user->setPassword('');(假设你已经将一个实体绑定到表单)它将清除该值,但是如果你将它设置为null它将不会清除它,而是它将显示最初绑定到表单的值。

答案 1 :(得分:1)

截至文件说:

  

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

我假设您没有声明字段的默认值。

请为此表单元素定义默认值,例如:

use \Phalcon\Forms\Element\Password;

class SigninForm extends ... {

    // ...

    $passwordField = new Password('password');
    $passwordField->setDefault('');

    // ...

    $this->add($passwordField);

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

答案 2 :(得分:1)

$form->getElements()['password']->setAttribute('values' , '' );

答案 3 :(得分:0)

已修复3.0.x分支。

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

zephir fullclean
zephir build

参考文献:

答案 4 :(得分:0)

你可以试试这个

$形式 - >获得('密码') - >复位();