2009-06-10 9 views
-1

Iモデルのデータベース操作とコントローラのロジック部分を持つことで、データベースの機能とロジック部分を分離したいと考えています。以前私はコントローラ自体のアクション部分にすべてのコードを持っていました。私は何かを試みたが、うまくいかない。CakePHPのモデルとコントローラの構造

これは私が以前持っていたものです:

/* Controller */ 

function insertFormName(){  
    $formname=$_POST['formname']; 
    $ret = $this->Form->query("Select id from forms order by id DESC LIMIT 1"); 
    $newid=$ret[0]['forms']['id']; 
    $this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid)); 
    } 

そして今、私はそれを動作しないビットを、変更された:

/* Controller */ 

function insertformname() 
    {  
     $this->data['Form']['formname']=$this->params['form']['formname']; 
     $this->Form->save($this->data); 
     $this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid)); 
    } 

/* Model */  
function save($data) 
    {  

    $ret = $this->Form->query("Select id from forms order by id DESC LIMIT 1"); 
    $newid=$ret[0]['forms']['id']; 
    $this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid)); 
    return $newid; 

    } 

EDIT:

私は別のことを試してみましたモデル内のすべての機能を持ち、その機能をコントローラから呼び出すだけです。この方法は正しいですか?

/* Model */ 
function saveFormName($data) 
    {  
    $this->formname=$data[$this->name]['formname']; 
    $ret = $this->Form->query("Select id from forms order by id DESC LIMIT 1"); 
    $newid=$ret[0]['forms']['id']; 
    $this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid)); 
    } 

/* controller */ 
function insertformname() 
    {  
    $this->data['Form']['formname']=$this->params['form']['formname']; 
    $this->Form->saveFormName($this->data); 
    } 
+0

いいえ、それはどちらかそれではないです。あなたの最近の質問から、ケーキのマニュアル(book.cakephp.org)の再読から最大の利益を得ると思われます。数時間しかかかりませんが、あなたが持っている質問には答えます。 また、CakephpのIBM DeveloperWorksチュートリアル・シリーズ(scribd上で、それを検索するだけです)をチェックしてください。少し古いですが、それはケーキの哲学を洞察するための最良のプライマーです。 –

答えて

3

ケーキブック(book.cakephp.org)を再訪し、レッスンをやり直すべきかのようです。フォームを正しく設定した場合は、手動で$ _POST ['formname']を$ this-> dataに割り当てる必要はありません。フォームのフィールド名(HTML内)をデータ[ModelName] [FieldName]に設定してみてください。

次へ:

$this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid)); 

あなたはそれを保存した後、なぜあなたはデータの権利を更新していますか? $ newidと$ formname変数はどこから来ますか? Model :: saveで定義されていますが、コントローラでは定義されていません。

これは、あなたがCakeのオートマチックのものをあまりにも多く使って戦っているようです。おそらくあなたはあなたの質問を再投稿するべきですが、単に "なぜこれは機能しないのですか?"というのではなく、あなたの上位の説明を綴ってください。これは単純化することができますように私に見えるが、再び、私はあなたの目的が何かをよく分かりません。

謹んで、 トラヴィス

関連する問題