Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在输入字段下面显示表单错误消息_Php_Css_Forms_Phalcon - Fatal编程技术网

Php 在输入字段下面显示表单错误消息

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

如果某个字段未通过验证,是否有方法在表单的输入字段下显示错误消息?我是否可以用显示表单的相同操作(在我的例子中是用户/索引)处理表单,然后将这些错误消息发送给视图?我拥有的是:index.volt:

<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>