2009-06-10 56 views
-1

我想通過在模型中的數據庫操作和控制器中的邏輯部分來分離數據庫功能和邏輯部分。早些時候,我擁有了控制器本身的動作部分中的所有代碼。我嘗試了一些東西,但它不起作用。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; 

    } 

編輯:

我已經嘗試過其他方式..在模型中具有完整的功能,並從控制器調用該功能。這種方法是否正確?

/* 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上,只是搜索它)。有點過時了,但它是洞察Cake哲學的最佳入門書。 – 2009-06-11 16:17:36

回答

3

看起來您應該重新訪問Cake book(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 Automagic的東西爭鬥太多。也許你應該重新發布你的問題,但是請詳細描述你的高級描述,而不是僅僅描述一個「爲什麼這不工作?」在我看來,這可能會簡化一噸,但是,我不太清楚你的目標是什麼。

恭敬地, 特拉維斯