PHP пост URL без действий - PullRequest
       3

PHP пост URL без действий

0 голосов
/ 08 ноября 2011

В платформе CodeIgniter у меня есть действие формы, которое отправляет идентификатор ряда флажков на контроллер.Контроллер проверяет каждый идентификатор, чтобы убедиться, что он действителен, а затем распечатывает документ PDF.Это прекрасно работает.

Итак, мой текущий метод - / items, и я публикую в метод / documents

function documents()
  if ($this->input->post() && validate_documents())
  {
    $this->load->library('Print_docs');
    $this->print_docs->execute($this->input->post());
  }
}

Итак, если документы будут напечатаны, то это нормально работает:пользователь остается в методе / items, а pdf предлагается для загрузки в браузере.

Если, однако, validate_documents () имеет значение false, то я не хочу, чтобы что-либо происходило - т.е. пользователь должен оставаться в методе / items.Однако в действительности происходит то, что пользователь каким-то образом перенаправляется на метод / documents - а браузер пуст.

Итак, почему пользователь перенаправляется на метод / documents?И как сохранить пользователю метод / items, несмотря ни на что?

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

Форма сообщения - это обновление страницы. Когда генерируется pdf, страница «обновить» на самом деле является тем, что вы загружаете pdf - поэтому браузер не отвлекает вас от метода /items - он такой же, как если бы вы открывали ссылку с target="_blank", страница открывается в новом окне, а текущая страница остается без изменений.

Вы можете сделать 1 из 2 вещей здесь:

  1. Перенаправление, если в методе documents возникла ошибка, обратно в /items
  2. Отправьте форму через ajax, поэтому, если есть ошибка или нет, вы остаетесь на /items
0 голосов
/ 08 ноября 2011
So, why is the user being redirected to the /documents method?

неверно, потому что, когда вы проверяете валидацию, она уже используется в методе документа. Таким образом, вы должны в основном перенаправить на функцию items, если валидация ложна ..

0 голосов
/ 08 ноября 2011

Он перенаправляется, потому что вы сказали, что идите туда (в).

Единственная причина, по которой вы не обращаетесь к методу документов, когда проверка в порядке, это печать PDF. Что вы можете сделать, так это переместить код из документов в метод «items» и установить действие формы «items». Таким образом, когда проверка не проходит, пользователи «перенаправляются» обратно в форму, где вы должны предоставить отзыв о том, что не так (например, сообщения об ошибках).

На странице библиотеки form_validation есть несколько примеров того, что я объяснил: http://codeigniter.com/user_guide/libraries/form_validation.html

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