2011-11-08 1 views
0

CodeIgniter 프레임 워크에는 컨트롤러에 여러 확인란의 ID를 게시하는 양식 작업이 있습니다. 컨트롤러는 각 ID를 검사하여 ID가 ​​유효한지 확인한 다음 pdf 문서를 인쇄합니다. 이것은 잘 작동합니다. PHP 게시물에 아무런 반응이없는 URL

그래서, 내 현재의 방법은/항목이며, 문서가 인쇄되는 경우 나,

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

그래서/문서의 방법에 게시하고,이 잘 작동합니다 : 사용자가/아이템 방법에 남아 pdf는 브라우저에서 다운로드로 제공됩니다.

그러나 validate_documents()가 false 인 경우 아무 일도 일어나지 않습니다. 즉 사용자는/items 메서드에 있어야합니다. 그러나 실제로 일어나고있는 것은 사용자가 어떻게 든/documents 메서드로 리디렉션되고 브라우저가 비어 있다는 것입니다.

그래서 사용자가/documents 방법으로 리디렉션되는 이유는 무엇입니까? 그리고 어떻게 사용자가/items 메서드를 유지합니까?

답변

1

양식 게시물은 페이지 새로 고침입니다. pdf가 생성되면 실제로 페이지를 새로 고침하면 pdf가 다운로드되므로 브라우저에서 /items 방법을 사용하지 않아도됩니다. target="_blank"으로 링크를 여는 것과 같습니다. 페이지가 열립니다. 새 창과 현재 페이지는 변경되지 않습니다.

당신은 1 여기 일 2의 작업을 수행 할 수 있습니다

  1. 리디렉션 documents 방법에 오류가 다시 /items
  2. 오류 여부가 있는지, 그래서 아약스를 통해 양식을 제출이있는 경우, 당신은에 머물렀다 /items
+0

좋아,이 부분은 내가 이해하지 못했던 부분이다 - "페이지 새로 고침은 사실 PDF 다운로드"입니다. 이제는 의미가 있습니다. 옵션 1은 작동하지만 (또는 대신/items 메소드에 대신 게시 함), 선택된 체크 박스 목록을 잃게됩니다. 따라서 최선의 선택은 아약스 인 것 같습니다 ... 명백한 다른 것을 놓치지 않는 한. – JonoB

+0

실제로 두 가지 방법을 모두 권하고 싶습니다. ajax를 통해/items에 제출할 수 있습니다. 그러나, 당신은 또한 non-js 접근법을 필요로 할 것이다 - 그래서'/ items'에 제출하는 것은 (자바 스크립트의 유무에 관계없이) 어느 쪽이든 작동 할 것이다. – swatkins

0

그것은 당신이 거기에 가라고 말했기 때문에 방향이 바뀌고있다.

문서 방법으로 이동하지 않는 유일한 이유는 유효성 검사가 정상 일 때 PDF 인쇄 때문입니다. 당신이 할 수있는 것은 "items"메소드로 옮겨진 문서의 코드를 가지고, 폼의 액션을 "items"로 설정하는 것입니다. 이렇게하면 유효성 검사가 실패 할 때 사용자는 양식으로 다시 리디렉션됩니다. 여기서 오류 메시지 (예 : 오류 메시지)를 제공해야합니다. .. 유효성 검사를 체크 할 때,이 문서의 방법에 이미 있기 때문에 http://codeigniter.com/user_guide/libraries/form_validation.html

0
So, why is the user being redirected to the /documents method? 

이 잘못 그래서 당신은 기본적으로 항목을 리디렉션해야합니다

form_validation 라이브러리 페이지는 제가 설명 무엇의 몇 가지 예를 가지고 만약 유효성 검사가 거짓이면 ... #