编辑:这个问题适用于旧版的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
答案 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)
你可以试试这个
$形式 - >获得('密码') - >复位();