Php 在输入字段下面显示表单错误消息
如果某个字段未通过验证,是否有方法在表单的输入字段下显示错误消息?我是否可以用显示表单的相同操作(在我的例子中是用户/索引)处理表单,然后将这些错误消息发送给视图?我拥有的是:index.volt:Php 在输入字段下面显示表单错误消息,php,css,forms,phalcon,Php,Css,Forms,Phalcon,如果某个字段未通过验证,是否有方法在表单的输入字段下显示错误消息?我是否可以用显示表单的相同操作(在我的例子中是用户/索引)处理表单,然后将这些错误消息发送给视图?我拥有的是:index.volt: <div class="loginForm"> <form action=<?= $form->getAction(); ?> method="POST"> <label for="username">Username: </label&g
<div class="loginForm">
<form action=<?= $form->getAction(); ?> method="POST">
<label for="username">Username: </label>
<?= $form->render('username'); ?>
<br/>
<label for="password">Password: </label>
<?= $form->render('password'); ?>
<br>
<?= $form->render('login'); ?>
</form>
</div>
method=“POST”>
用户名:
密码:
LoginForm.php:
<?php
use Phalcon\Forms\Form,
Phalcon\Forms\Element\Text,
Phalcon\Forms\Element\Password,
Phalcon\Forms\Element\Submit,
Phalcon\Validation\Validator\PresenceOf,
Phalcon\Validation\Validator\StringLength;
class LoginForm extends Form {
public function initialize()
{
$this->setAction('login');
$username = new Text('username');
$username->addValidator(new PresenceOf(array (
'message' => 'Can\'t be empty'
)));
$password = new Password('password');
$password->addValidator(new PresenceOf(array (
'message' => 'Can\'t be empty'
)));
$submit = new Submit('login', array('value' => 'Login'));
$this->add($username);
$this->add($password);
$this->add($submit);
}
}
首先,您在索引.volt中提供的内容不是volt内容。请参见此处,并在视图中使用Volt语言
你要的东西叫法尔康
不幸的是,在当前版本中,您可以根据类型(成功、错误、警告等)快速显示消息,但您可以创建自己的类型,因此让我们假设该类型表示输入名称
UserController.php
...
public function loginAction()
{
if($this->request->isPost()) {
if (!$this->_loginForm->isValid($this->request->getPost())) {
$messages = $this->_loginForm->getMessages();
$userMessage = $messages->filter('username');
if(count($userMessage))
$this->flash->message('username', $userMessage[0]);
$passMessage = $messages->filter('password');
if(count($passMessage))
$this->flash->message('username', $passMessage[0]);
return $this->dispatcher->forward(["action" => "index"]);
} else {
//Login
}
}
index.volt
<div class="loginForm">
<form action="{{form.getAction()}}" method="POST">
<label for="username">Username: </label>
{{form.render('username')}}<br/>
{{ flash.has('username') ? flash.output('username') : '' }}
<label for="password">Password: </label>
{{form.render('password')}}<br>
{{ flash.has('password') ? flash.output('password') : '' }}
{{form.render('login')}}
</form>
</div>
用户名:
{{form.render('username')}}
{{flash.has('username')?flash.output('username'):''}
密码:
{{form.render('password')}}
{{flash.has('password')?flash.output('password'):''}
{{form.render('login')}
Thanx响应,但我在第5行得到一个致命错误,其中是{{flash.output('username')},即使验证没有通过,并且username的flash消息存在。有什么建议吗?我用flash.output()错误解决了我的问题。我必须在di注册它。但另一个问题出现了。这些错误消息被附加到表单中,每当我转到另一个页面并返回时,它们都会作为div标记附加到表单中。有没有办法只显示一次这些错误消息?@user2167174在输出消息测试之前,如果有消息要输出,请参阅我的更新答案。
<div class="loginForm">
<form action="{{form.getAction()}}" method="POST">
<label for="username">Username: </label>
{{form.render('username')}}<br/>
{{ flash.has('username') ? flash.output('username') : '' }}
<label for="password">Password: </label>
{{form.render('password')}}<br>
{{ flash.has('password') ? flash.output('password') : '' }}
{{form.render('login')}}
</form>
</div>