提交错误数据后,从FORM中清除值

时间:2018-06-04 09:24:24

标签: php

我的表单有问题。当我总结表格女巫正确的数据一切都很好。问题是我发送错误数据的数据。例如,当"密码"和#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');
    }
  }

我如何才能正确解决?我需要表单,我的数据将在与错误数据汇总后保留。

1 个答案:

答案 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']; ?>">

这只是一个让你理解的基本代码,因为我不知道实际的代码是什么样的。