2012-04-17 24 views
1
genreated CakePHPの2.1

CakePHPのモデル誤差

エラー編集機能を作成中に、私は奇妙な問題に直面しています

: 不正なオフセット型[CORE \ケーキ\モデル\ Model.php、ライン2689]

私の編集Task.php

<?php 
    class Task extends AppModel { 
     var $name = 'Task'; 
    } 
    ?> 

:.ctpファイルが

<?php echo $this->Form->create('Task');?> 
<fieldset> 
<legend>Edit Task</legend> 

<?php 
    echo $this->Form->hidden('id'); 
    echo $this->Form->input('title'); 
    echo $this->Form->input('done'); 
?> 

</fieldset> 
<?php echo $this->Form->end('Save');?> 

モデルでありますコントローラ:TasksController.php

<?php 

     class TasksController extends AppController { 
      var $name = 'Tasks'; 
      var $helpers = array('Html', 'Form'); 
      function index() { 
       $this->set('tasks', $this->Task->find('all')); 
      } 
      function add() { 
       if (!empty($this->data)) { 

       $this->Task->create(); 
       if($this->Task->save($this->data)){ 
        $this->Session->setFlash('The Task has been saved'); 
        $this->redirect(array('action'=>'index'),null,true); 
       }else{ 
        $this->Session->setFlash('Task not saved.Try again.'); 
       }  

      } 
     } 
     function edit($id = null) { 
      if (!$id) { 
       $this->Session->setFlash('Invalid Task'); 
       $this->redirect(array('action' => 'index'), null, true); 
      } 
      if (empty($this->data)) { 
       $this->data = $this->Task->find(array('id' => $id)); 
      } else { 
       if ($this->Task->save($this->data)) { 
        $this->Session->setFlash('The Task has been saved'); 
        $this->redirect(array('action' => 'index'), null, true); 
       } else { 
        $this->Session->setFlash('The Task could not be saved.Please, try again.'); 
       } 
      } 
     } 
    } 

?> 
+1

関連モデルとコントローラコードを投稿できますか? 'edit.ctp'自体は本当にエラーを特定するのに役立つものではありません。 – mensch

+0

コントローラコード?おそらくコードで質問を編集するのが最善です。コメントとして投稿するのではなく、正しく書式設定することができます。 – mensch

答えて

4

私はあなたのfind()方法が誤っていると思う:フォーム上のデータを事前に移入するために

$this->data = $this->Task->find('all', array('conditions' => array('id' => $id))); 

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html

+0

エラーは解決されましたが、私の問題は、このコードはテキストボックスにID 1のデータを入力していないことです。 –

+0

@RohitKumarChoudhary '$ id'が確かに1であることをチェックしましたか?あなたのデータに実際にIDが '1'の行が含まれているかどうかチェックしましたか?これらの基本的なチェックを行います –

+0

はい私はこれをチェックしました。私のテーブルにはこれが入っています。 –

-1

$this->data = $this->Task->find(array('id' => $id)); 

を変更次の手順を実行する必要があります。

<?php echo $this->Form->create('Task');?> 
<fieldset> 
<legend>Edit Task</legend> 
<?php 
echo $this->Form->hidden('id', array('value' => $this->data[0]['Task']['id'])); 
echo $this->Form->input('title', array('value' => $this->data[0]['Task']['title'])); 
echo $this->Form->input('done', array('value' => $this->data[0]['Task']['done'])); 
//var_dump($this->data[0]['Task']['id']); 
?> 
</fieldset> 
<?php echo $this->Form->end('Save');?> 
<?php echo $this->Html->link('List All Tasks', array('action'=>'index')); ?><br /> 
<?php echo $this->Html->link('Add Task', array('action'=>'add')); ?><br /> 
<?php echo $this->Html->link('List Done Tasks', array('action'=>'index')); ?><br /> 
<?php echo $this->Html->link('List Pending Tasks', array('action'=>'index')); ?><br /> 
+0

これは当てはまりません。あなたのコントローラとモデルが正しく設定されていれば、CakePHPはあなたのためにそれを行います。 –