2014-07-16 2 views
0

나는 CakePHP 2.5.2를 사용합니다. POST 방식으로 보내는 표준 양식이 있습니다.URL에 게시 매개 변수 넣기

컨트롤러에서이 게시물을 포착하고 데이터베이스의 데이터를 표시하지만 누군가가 페이지를 새로 고치면 POST 요청에 의해 매개 변수가 제공되었으므로 데이터를 다시 읽을 수 없습니다. 그래서 URL을 다음과 같이 만들고 싶습니다.

http://example.com/controller/action/**firstDataFromPost**/**secondDataFromPost**

내 사이트를 새로 고칠 수는 있지만 URL을 어떻게 수정하는지 모르겠습니다.

+0

당신은 거기에 sth하고 있습니다. 찾고있는 패턴을 PRG라고 부르며 나중에 get이 필요하고 쿼리 문자열이 사용됩니다. 이것이 올바르게 구현 된 https://github.com/CakeDC/search를 확인하십시오. – mark

답변

2

정말 두 가지 옵션이 여기에 있습니다 :

http://example.com/controller/action?firstDataFromPost&secondDataFromPost
:

사용하여 변수가 자동으로 쿼리 문자열의 끝에 추가됩니다 의미 할 것이다 대신 POST의 GET의 HTTP 방법을 사용

을 GET

POST 후 리디렉션

필요한 변수를 조합하는 작업에 양식을 게시하고 수행 할 페이지로 리디렉션 할 수 있습니다 더 이상 종속 HTTP 동작이 없습니다. 항상

public function receive() { 
    $var1 = $this->data['MyForm']['my_field1']; 
    $var2 = $this->data['MyForm']['my_field1']; 
    $this->redirect(array('action' => 'showresults', $var1, $var2)); 
} 

그런 다음 showresults() 행동이 경과 매개 변수 접근을 : 당신이 receive() 행동에 게시 말

http://example.com/controller/showresults/VAR1HERE/VAR2HERE
:

public function showresults($var1, $var2) { 
    // ... display your results here using these variables 
} 

... 당신의 URL은 다음과 같이 보일 것입니다

+0

구현중인 항목이 검색 (사용자가 생각하는 것처럼 들리는) 인 경우 GET을 사용하십시오. POST는 일반적으로 데이터를 쓸 때 사용됩니다. – Kai

+0

정말 대단한 도움을 주셔서 감사합니다 get 방법으로 "ó", "ł", "±"등과 같은 utf8 문자를 보내면 좋은가요? –

+0

전에 CakePHP는 내부적으로 "URL 친숙한"문자로 변환 할 수있었습니다. 그렇지 않다면 문자열을'utf8_encode()'또는'urlencode()'에 전달해야하고, 병동 이후에 해독해야 할 수도 있습니다 –