2009-06-10 4 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; 

    } 

:

내가 시도 그것을 다른

내가 이전 한 것입니다 방법 .. 모델에서 전체 기능을 가지고 그냥 컨트롤러에서 해당 함수를 호출하십시오.이 방법은 정확합니까?

/* 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 철학에 대한 통찰력을 얻는 최고의 입문서입니다. –

답변

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 automagic 재료로 너무 많이 싸우려는 것처럼 보입니다. 아마도 귀하는 귀하의 질문을 다시 게시해야하지만 "왜이 문제가 해결되지 않습니까?" 이것이 나에게 톤으로 단순화 될 수있는 것처럼 보이지만, 다시, 당신의 목표가 무엇인지는 잘 모르겠습니다.

감사합니다. 트래비스

관련 문제