1

こんにちは、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 つはほぼ同じで、正常に動作します。エラーがわかりません。

助けてくれてありがとう。マルセロ。

4

3 に答える 3

0

配列キー$this->data['Ficha']が存在しない可能性があります。小文字の「ficha」フォームを作成しました。この名前は大文字にする必要があります。大文字にしないと、データはで使用できます$this->data['ficha']。したがって、フォーム作成の呼び出しは次のようになります。

<?php echo $this->Form->create('Ficha',array('action'=>'localiza'));?>
于 2012-06-28T08:07:17.010 に答える
0

Cake では 2 つの方法でデバッグできます

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

また

その他の PHP の方法

print_r($this->data);

このようにして、data->params を適切に渡しているかどうかがわかります。

モデルの最初の文字が小文字になっているのはなぜですか? そのはず

  • フィチャス
  • ラボス

次に、必要に応じて、コントローラーで直接検索を発行できます。

$d = $this->Fichas->find('all', array();

于 2012-07-02T05:11:27.627 に答える
0

home.ctp ファイルを別のコントローラーに追加した可能性があります。次の行にコントローラーを追加してみてください。

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

それが役に立てば幸い。

于 2012-07-16T04:50:10.153 に答える