2013-11-14 3 views
0

completed 변수 (텍스트)가있는 Horse 개체가 있습니다. 보기에서 set complete을 클릭 한 다음 해당 말의 completed 변수를 "예"로 설정할 수 있기를 원합니다. 이 후 사용자를 작업/색인으로 리디렉션합니다. 내 생각은 컨트롤러에 setcomplete($id) 함수를 만드는 것입니다. 따라서 /setcomplete/4을 전달할 수 있으며 해당 말의 플래그가 변경됩니다.AppController에서 단일 변수 값 변경

나는 기본보기를 만들었지 만,보기가 필요 없다는 생각이 들지만 그걸 어떻게 해결 해야할지 모르겠다. ... $this->render() 또는 이와 비슷한 것을 사용하려고 생각했다. .

이것은 기본 코드입니다 ... id를 전달한 다음 변수를 변경 한 다음 tasks/index로 리디렉션합니다.

오류가 발생하지 않습니다 .... 그저 작동하지 않습니다. 그게 전부입니다.

public function setcomplete($id = null) { 
     if (!$this->Task->exists($id)) { 
      throw new NotFoundException(__('Invalid task')); 
     } 
     if ($this->request->is(array('post', 'put'))) { 
      $this->set('completed', 'yes'); 
      if ($this->Task->save($this->request->data)) { 
       $this->Session->setFlash(__('The task has been updated.')); 
       return $this->redirect(array('action' => 'index')); 
      } else { 
       $this->Session->setFlash(__('The task could not be saved. Please, try again.')); 
      } 
     } else { 

     } 

    } 
+0

어떤 행동을합니까? 그러나'$ this-> layout = $ this-> autoRender = false;'는 누락 된 뷰에 대한 에러를 발생시키지 않도록합니다. – Kai

+0

전혀 동작이 보이지 않습니다. 아주 기본적인 뷰를 설정했고 거기에 있지만 변수가 변경되지 않습니다. 이것이 내가 원하는 것입니다. –

+0

저장하고 결과를 게시하는 행 위에'debug ($ this-> request-> data)'를 추가 할 수 있습니까? 문제를 정확히 찾아내는 데 도움이 될 수 있습니다. –

답변

1

귀하의 문제에 대한 이해에 따릅니다. Task 모델의 경우 completedyes으로 설정하려고합니다. 내가 잘못 생각한 것 같습니다.

what about the $this->request->data here? 

는 당신이 다음과 같이 수행하여 문제를 해결할 수

Array(
    'Task' => Array(
     'id' => 4, // for eg.. 
     'completed' => 'yes' 
    ) 
) 

하지 않을 경우 아래와 같이 구조 등의 작업 모델에 저장하고자하는 데이터를 포함 않습니다. [있다고 가정하면 $this->request->data]

public function setcomplete($id = null) { 
    if (!$this->Task->exists($id)) { 
     throw new NotFoundException(__('Invalid task')); 
    } 

    $this->Task->id = $id; 
    $this->Task->set('completed', 'yes') 

    if ($this->Task->save()) { 
     $this->Session->setFlash(__('The task has been updated.')); 
     return $this->redirect(array('action' => 'index')); 
    } else { 
     $this->Session->setFlash(__('The task could not be saved. Please, try again.')); 
    } 
} 
+0

이것이 효과적이었습니다. 지금 나는 그 이유를 알고 있습니다. 감사합니다 @ 아시아 쿠마! –

+0

도움이 되니 기쁩니다 :) –

관련 문제