2012-06-28 57 views
1

嗨,我用cakephp(v.1.3)新增了。我試圖做一些簡單的事情。Cakephp控制器不處理表單數據

我有兩張表:fichas [id,... etc]和labos [id,laboratorio,ficha_id],所以「labos」屬於「fichas」。 (labos.laboratorio是ENUM字段)。

我想查看「數據表」給定labos.id和labos.laboratorio所以從來就包含在添加的「home.ctp」

<h3>Mostrar Ficha</h3> 
<?php echo $this->Form->create('ficha',array('action'=>'localiza'));?> 
<?php echo $this->Form->radio('laboratorio',array('A','B','C'),array('A','B','C')); ?> 
<?php echo $this->Form->input('id',array('label'=>'Numero','type'=>'text')); ?> 
<?php echo $this->Form->end("Mostrar");?> 

如果是「fichas_controller.php」下面的代碼以下內容:

function localiza(){ 

    $laboratorio=$this->data['Ficha']['laboratorio']; 
    $id=$this->data['Ficha']['id']; 
    if(!$id){ 
      $this->Session->setFlash('Por favor introduzca un valor valido'); 
      $this->redirect(array('action'=>'index')); 
     } 

    $this->set('fichas',$this->Ficha->findID($id,$laboratorio)); 

} 

最後模型 「ficha.php」 以下內容:

function findID($id=null,$laboratorio=null){ 
    return $this->find('all',array('conditions'=>array('Labo.laboratorio'=>$laboratorio,'Labo.id'=>$id))); 
} 

顯然FIL e views/fichas/localiza.ctp存在

事情是當我按下提交按鈕的形式它只是重新加載home.ctp頁面。看起來控制器的代碼沒有被執行,因爲我試圖強制加載索引操作的錯誤消息,將if條件改爲true,但結果相同。我已將模型中的函數的名稱更改爲期望錯誤,但我得到的結果相同。 我在home.ctp頁面中有另外兩種形式,但調用另一種動作和模型。 其中一個幾乎相同,它工作正常。 我無法弄清楚錯誤。

在此先感謝您的幫助。 馬塞洛。

+0

你可以發佈從home.ctp生成的HTML嗎? – bfavaretto

回答

0

數組鍵$this->data['Ficha']可能不存在。您已創建小寫「ficha」表單,此名稱應該大寫,否則數據可在$this->data['ficha']中獲得。所以形式創建調用是這樣的:

<?php echo $this->Form->create('Ficha',array('action'=>'localiza'));?> 
0

您可以用兩種方法調試的蛋糕

Configure::write('debug', 2); 
debug($this->data); 

OR

其他PHP方式

print_r($this->data); 

這樣,你會知道你是否正確地傳遞了數據 - >參數。

爲什麼你的模型首次使用小寫字母?它應該是

  • Fichas
  • Labos

然後你就可以在控制器上發出直接的發現,如果你只是想。

$ d = $這個 - > Fichas->找到( '所有',陣列();

0

你可能已經添加了home.ctp文件到另一個控制器。嘗試在以下行中添加控制器:

<?php echo $this->Form->create('ficha',array('controller' => 'fichas', 'action'=>'localiza'));?> 

希望它有幫助。