禁用CakePHP表单输入框中的自动完成功能

kar*_*rns 5 forms cakephp

我正在使用CakePHP Form帮助程序创建表单输入和一些输入(大多数时候'用户名'和'密码')正在创建操作,登录操作等自动完成.这很烦人.我猜这些只是更常见,所以浏览器使用其cookie来尝试完成输入.

无论如何..我如何禁用此功能?

在我看来:

...

echo $this->Form->input('username', array(
    'label' => 'Please enter your username',
    'class' => 'pure-u-1-2'
));
echo $this->Form->input('password', array(
    'label' => 'Please enter your password',
    'class' => 'pure-u-1-2'
));

...
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

kar*_*rns 5

您可以指定要发送到表单助手的属性.指定属性"autocomplete"并将其值设置为"off".

...

echo $this->Form->input('username', array(
    'label' => 'Please enter your username',
    'class' => 'pure-u-1-2',
    'autocomplete' => 'off'
));
echo $this->Form->input('password', array(
    'label' => 'Please enter your password',
    'class' => 'pure-u-1-2',
    'autocomplete' => 'off'
));

...
Run Code Online (Sandbox Code Playgroud)

这会为您的HTML带来类似的结果:

<input name="data[Model][username]" autocomplete="off" class="pure-u-1-2" id="ModelUsername" type="text">
Run Code Online (Sandbox Code Playgroud)

您也可以在整个表单上执行此操作,而不仅仅是每个输入.只需在表单中指定相同的属性和值,如下所示:

...

echo $this->Form->create('Model', array(
    'class' => 'class',
    'autocomplete' => 'off'
));
Run Code Online (Sandbox Code Playgroud)

这将在HTML中为您提供以下内容:

<form action=".../Model/Action" class="class" autocomplete="off" id="ModelActionForm" method="post" accept-charset="utf-8">
Run Code Online (Sandbox Code Playgroud)

注意现在有几个浏览器会忽略autocomplete ="off"或autocomplete ="false".解决方法是在表单上的所有其他输入之前放置一个隐藏的文本和密码字段.浏览器将填充那些而不是您想要单独留下的浏览器.