Как сделать так, чтобы сообщение об ошибке появлялось только после отправки $ _POSTS? - PullRequest
0 голосов
/ 16 января 2019

В блоге я пишу код, администратор может редактировать существующие сообщения.

Я хочу, чтобы сообщение error появлялось, когда $_POST['title'] для e.g пуст (там будет отображаться: «Ваше сообщение должно иметь заголовок»). Я также делаю это, если подзаголовок, контент или категория пусты.

Ошибки работают нормально, если одна или некоторые из них пусты. Как только я загружаю страницу для редактирования сообщения, каждая ошибка отображается с самого начала.

Как сделать так, чтобы они отображались только тогда, когда один или несколько $_POST's пустые после нажатия <input type="submit .../> (их не должно быть при загрузке сайта)?

Это функция в PostsAdminController.php, которая проверяет $_POST's и отображает сайт:

public function edit()
{
  $error = "";
  $id = $_GET['id'];
  $entry = $this->postsRepository->find($id);
  $categoryFId = $this->categoryRepository->getOneCatFromId($entry->c_Id);
  $savedSuccess = false;
  $abort = false;

  if ($this->loginService->check()) {
    if (!empty($_POST['title'])) {
      $entry->title = $_POST['title'];
    } else {
      $error .= "Your post should have a title.";
      $abort = true;
    }
    if (!empty($_POST['subheading'])) {
      $entry->subheading = $_POST['subheading'];
    } else {
      $error .= "A good subheading is nothing you should just leave out.";
      $abort = true;
    }
    if (!empty($_POST['content'])) {
      $entry->content = $_POST['content'];
    } else {
      $error .= "Your post should have content, you know, it wouldn't be a 'post' then.";
      $abort = true;
    }
    if (!empty($_POST['category'])) {
      $entry->c_Id = $_POST['category'];
    }
    if ($abort == false){
      $this->postsRepository->update($entry);
      $savedSuccess = true;
    }

  } else {
    $error = "You have no permission to do this, how the hell did you get here?";
  }

  $this->render("post/admin/edit", [
    'entry' => $entry,
    'error' => $error,
    'savedSuccess' => $savedSuccess,
    'categoryFId' => $categoryFId
  ]);
}

Я действительно надеюсь, что кто-то может помочь мне с этим, я не знаю, что я мог, чтобы позволить им исчезнуть только тогда, когда ПОЧТЫ уже отправлены ..

1 Ответ

0 голосов
/ 16 января 2019

Вы должны проверить, использовалось ли действие POST:

if ($_SERVER['REQUEST_METHOD'] == 'POST')

в вашем случае

...
if ($this->loginService->check()) {
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
       if (!empty($_POST['title'])) {
       ...
       }
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...