我的表单有问题。当我总结表格女巫正确的数据一切都很好。问题是我发送错误数据的数据。例如,当"密码"和#34; PasswordAgain"不匹配。我的表格中的所有数据都已清除。
我有MVC架构。鉴于我有
<div class="form-group row">
<label for="Name" class="col-sm-2 col-form-label">Jméno:</label>
<input id="name" type="text" required name="name" class="form-control col-md-3" placeholder="Jméno" <?php if (isset($_POST['name'])) echo(htmlspecialchars($_POST['name']));?>>
</div>
控制器中的我有
if (isset($_POST['addUser']))
{
try
{
if (empty($_POST['nickname']))
{
$this->addMessage('the nickname must be filled in');
$counter = 1;
}
if (empty($_POST['name'])) {
$this->addMessage('the name must be filled in');
$counter = 1;
}
if (strlen($_POST['password']) < 5) {
$this->addMessage('the password must be filled in');
$counter = 1;
}
if (($_POST['password']) != ($_POST['passwordAgain'])) {
$this->addMessage('passwords must match.');
$counter = 1;
}
if ($counter == 0)
{
$UsersManager->insertUser($_POST['nickname'], $_POST['name'], $_POST['password'], $_POST['passwordAgain'], $_POST['about']);
$this->addMessage('User was succesfully aded');
$this->reroute('userAdd');
}
}
我如何才能正确解决?我需要表单,我的数据将在与错误数据汇总后保留。
答案 0 :(得分:0)
您在表单中输入的值将始终在页面刷新时清除。但是如果输入有一些错误,那么将该输入数组保存在一个单独的变量中(让我们说它旧)并再次传递给查看。在视图中,它将检查旧是否具有特定字段的值,如果是,则输入值到字段,否则该字段保持空白。
基本上,这就是大多数框架的做法。
在控制器中:
if ($counter == 0) {
$UsersManager->insertUser($_POST['nickname'], $_POST['name'], $_POST['password'], $_POST['passwordAgain'], $_POST['about']);
$this->addMessage('User was succesfully aded');
$this->reroute('userAdd');
} else {
$old = $_POST;
}
传递 $ old 变量进行查看。
在视图中:
<input type="text" name="nickname" value="<?php echo empty($old['nickname']) ? '' : $old['nickname']; ?>">
这只是一个让你理解的基本代码,因为我不知道实际的代码是什么样的。