gpt4 book ai didi

php - 在输入字段下方显示表单错误消息 Phalcon php

转载 作者:行者123 更新时间:2023-11-28 11:38:14 24 4
gpt4 key购买 nike

如果字段未通过验证,是否可以在表单的输入字段下方显示错误消息?我可以以某种方式在显示表单的同一操作(在我的情况下为用户/索引)中处理表单,然后发送这些错误消息以供查看吗?我有的是: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>

登录表单.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);
}
}

和 UserController.php:

<?php



class UserController extends \Phalcon\Mvc\Controller
{
/**
* login form
* @var LoginForm
*/
private $_loginForm;
public function initialize()
{
$this->_loginForm = new LoginForm();
}

public function indexAction()
{
$this->view->setVar('form', $this->_loginForm);
}
public function loginAction()
{
if($this->request->isPost()) {

if (!$this->_loginForm->isValid($this->request->getPost())) {
foreach ($this->_loginForm->getMessages() as $message) {
echo $message. '<br />';
// redirect to User/index and pass error messages to view to display them to a user
}
}

}
}

}

编辑:或者在显示它的同一操作上处理此表单会更好。我该怎么做?

最佳答案

首先,您在 index.volt 中提供的不是电压值。看这里how to configure Volt并在您的 View 中使用 Volt 语言。

你要的是flashing messages在法尔康。

不幸的是,在当前版本中,您只能根据类型(成功、错误、警告等)闪烁消息,但您可以创建自己的类型,所以让我们假装该类型表示输入名称。

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>

关于php - 在输入字段下方显示表单错误消息 Phalcon php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23322390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com