2013-10-07 2 views
0

CakePHP의 FormHelper를 사용하고 싶지 않습니다. 내 앱에서 Ajax를 사용하고 싶기 때문입니다. 양식에서 컨트롤러로 데이터를 전달하는 방법은 무엇입니까? jQuery에서 $.post을 사용하고 있지만 항상 오류가 발생합니다. 감사합니다.CakePHP의 HTML 폼

+0

당신이 어떤 오류를받을 수 있나요 대중이 당신의 컨트롤러에 기억 하는가? –

+0

컨트롤러에서 $ _POST를 사용할 수 있어야합니다. AJAX/POST 요청에서 사용할 필드를 지정해야합니다. 한 가지 알고 있어야 할 점은 마크 업 오류가 있거나 수동으로 작성된 양식에서 다소 비정상적인 경우 Cake는 종종 모든 게시물 데이터를 삭제하고 이상하고 혼란스러운 문제로 남을 것입니다. "blackholing"을 처리하는 방법에 대한 설명서를 확인하십시오. http://book.cakephp.org/2.0/ko/core-libraries/components/security-component.html#handling-blackhole-callbacks –

+3

'나는 원하지 않습니다. 내 응용 프로그램에서 Ajax를 사용하기 때문에 CakePHP의 FormHelper를 사용하십시오 - FormHelper가 당신의 Ajax 호출에 대해 무엇을하고 있습니까? 나는 문제없이 FormHelper와 Ajax를 항상 사용한다. – Konsole

답변

2

당신은 CakePHP의 양식 도우미와 Ajax를 사용할 수 있습니다. 뷰 파일에서

넣어 .ctp :

echo $this->Form->create('Model', array('id'=>'YourFormId', array('default'=>false))); 
echo $this->Form->input('field'); 
echo $this->Form->submit('Save'); 
echo $this->Form-->end 

공지 사항을 당신의 형상 -에> 당신이 정상이 "제출"을하지 폼을 알려줍니다 => 거짓 기본을 통과 만듭니다. 보기 파일의 맨 아래에

넣어 .ctp :

$data = $this->Js->get('#YourFormId')->serializeForm(array('isForm' => true, 'inline' => true)); 
$this->Js->get('#YourFormId')->event(
    'submit', 
    $this->Js->request(
     array('action' => 'yourAction', 'controller' => 'yourController'), 
     array(
     'update' => '#flash', 
     'data' => $data, 
     'async' => true,  
     'dataExpression'=>true, 
     'method' => 'POST' 
     ) 
    ) 
    ); 
    echo $this->Js->writeBuffer(); 

을 위는 Ajax와 자바 스크립트있는 PHP를 쓸 수 있도록 CakePHP의 JS 도우미입니다. 기본적으로 제출되고있는 양식 데이터를 가져 와서 직렬화하고 ajax를 통해/yourcontroller/youraction으로 전달합니다. update => # flash는 액션이 ​​완료된 후 #flash div를 업데이트하도록 Cake에게 명령합니다.

public $helpers = array('Js'); 
public $components = array('RequestHandler'); 
+0

이것은 굉장했다. @ Brett Stewart – justinhartman

0

- jQuery를 -

$.post('<?=$this->Html->url(array('controller'=>'xxx','action'=>'yyy'))?>', {a:1,b:2}); 

- CakePHP의 -

function yyy() { 
     $a = $this->request->data['a']; 
     $b = $this->request->data['b']; 
    }