2013-10-07 3 views
0

Я не хочу использовать FormHelper из CakePHP, потому что я хочу использовать Ajax в своем приложении. Как передать данные из формы в контроллер? Я использую $.post из jQuery, но всегда получаю сообщение об ошибке. Спасибо!HTML Form в CakePHP

+0

Какую ошибку вы получаете? –

+0

в вашем контроллере вы сможете использовать $ _POST, убедитесь, что ваш запрос ajax/post указывает поля, которые вы хотите использовать. одна вещь, о которой нужно помнить, заключается в том, что если в вашей созданной вручную форме есть ошибки разметки или что-то необычно необычное, Cake часто уничтожает все почтовые данные, и вам останется странная и запутанная проблема :) если это так, ознакомьтесь с руководством о том, как обращаться с «черным ходом»: http://book.cakephp.org/2.0/ru/core-libraries/components/security-component.html#handling-blackhole-callbacks –

+3

'Я не хочу использовать FormHelper из CakePHP, потому что я хочу использовать Ajax в своем приложении - что делает FormHelper для вашего вызова ajax? Я использую FormHelper и Ajax все время без каких-либо проблем. – Konsole

ответ

2

Вы можете использовать Ajax с CakePHP Form Helper.

В файле вид .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(); 

выше, является CakePHP JS помощник, чтобы помочь вам написать Ajax и Javascript, какой PHP. Он в основном захватывает данные формы, которые отправляются и сериализует их, и передает их/yourcontroller/youraction через ajax. Обновление => # flash сообщает Cake обновить div #flash после завершения действия.

Помните, в вашем контроллере, чтобы общественность

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']; 
    }