こんにちは、cakephp (v.1.3) の初心者です。私は簡単なことをしようとしています。
fichas[id,... etc] と labos[id,laboratorio,ficha_id] の 2 つのテーブルがあるため、「labos」は「fichas」に属します。(labos.laboratorio は ENUM フィールドです)。
labos.id と labos.laboratorio を指定して「ficha」を表示したいので、「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)));
}
明らかにファイル views/fichas/localiza.ctp が存在します
問題は、フォームの送信ボタンを押すと、home.ctp ページがリロードされることです。if条件をtrueに変更するインデックスアクションをロードする必要があるエラーメッセージを強制しようとしたため、コントローラーのコードが実行されていないように見えますが、結果は同じです。エラーが発生することを期待してモデル内の関数の名前を変更しましたが、同じ結果が得られます。home.ctp ページには別の 2 つのフォームがありますが、別のアクションとモデルを呼び出しています。そのうちの 1 つはほぼ同じで、正常に動作します。エラーがわかりません。
助けてくれてありがとう。マルセロ。