0

保存ロジックの isPut または isPost を修正するのを手伝ってください。次のコードでは、元のデータを表示できますが、保存しようとすると機能しません。問題はビューではなくコントローラーセクションにあると思いますここに私のフォームのビューがあります、

<?php 

    echo $this->Form->create('Role',array('url'=>array('controller'=>'Organisations','action' => 'edit_profile'),'id' => 'role'));
    echo $this->Form->input('RoleLanguage.rolename',array('label'=>'Profile Name:','id'=>'rolename'));

    $options = array('A' => 'Approve', 'P' => 'Pending', 'D' => 'Delete');
    echo $this->Form->input('Role.status', array(
    'options'=>$options,
    'empty' => false,
    'label'=>'Status',
     'style'=>'width:100px',

    'id'=>'status'
    ));
    $id= array('value' => $id);
    //print_r($id);die();
    echo $this->Form->hidden('rle_id', $id);
    echo "<br>";
    $options = array('R' => 'Role', 'P' => 'Position', 'T' => 'Team','C'=>'Core Strategic Profile');

     echo $this->Form->input('Role.type', array(
    'options'=>$options,
    'empty' => false,
    'label'=>'Type of Job Profile:',
     'style'=>'width:100px',

    'id'=>'type'
    ));
      echo "<br>";
      echo $this->Form->input('RoleLanguage.external_document_URL',array('label'=>'External Document URL:','id'=>'external_document_URL','type'=>'text'));
      echo "<br>";
      echo $this->Form->input('RoleLanguage.description', array('style'=>'width:420px','rows' => '5', 'cols' => '5','label'=>'Description','id'=>'description'));

    ?>

ここにコントローラーロジックがあります

function edit_profile($id=NULL)
{
     $this->layout='Ajax'; 

         //print_r($id);die();
         $this->set('id',$id); 
                $this->Role->recursive = 0;     
                $this->Role->id = $id;
                $language = $this->getLanguage('content');
                $this->Role->unBindModel(array("hasMany" => array('RoleLanguage')));
                $this->Role->bindModel(array("hasOne" => array('RoleLanguage'=> array('foreignKey' => 'rle_id', 'className' => 'RoleLanguage', 'type' => 'INNER', 'conditions' => array('RoleLanguage.language' => $language)))));

                $this->data = $this->Role->read();

                //print_r($this->data);die();

     if ($this->RequestHandler->isPut())
            {
            $this->data=array(null);
            $this->autoRender = false;
            $acc_id = $this->activeUser['User']['acc_id'];

            $this->data['Role']['acc_id'] = $acc_id;

            unset($this->Role->RoleLanguage->validate['rle_id']);
             print_r($this->data);die();
            $this->Role->saveAll($this->data);
            }
}

そのためのqboveビューコードを呼び出している別のビューでデータをシリアル化しています

$.ajax({
                                                    type: 'Put',
                                                    url: $('#role').attr('action'),
                                                    data: $('#role').serialize()
4

1 に答える 1

0

saveAllを呼び出したときに発生するモデル検証テストにデータが失敗している可能性があります。$ this-> Role-> invalidFields()を出力して、そこに何かがあるかどうかを確認しましたか?

于 2012-07-03T19:42:56.607 に答える