2010-07-04 3 views
0

CONTROLLERCakePHP의 검증을 잃고 매개 변수

class ImagesController extends AppController { 
    var $name = 'Images'; 
    var $uses = array('Image','Person'); 
    var $helpers = array('Html', 'Form'); 


     function add($idp = 0, $mac = 0) 
     { 


      if (!empty($this->data) && 
       is_uploaded_file($this->data['Image']['File']['tmp_name'])) { 
       $fileData = fread(fopen($this->data['Image']['File']['tmp_name'], "r"), 
             $this->data['Image']['File']['size']); 

       $this->data['Image']['name'] = $this->data['Image']['File']['name']; 
       $this->data['Image']['type'] = $this->data['Image']['File']['type']; 
       $this->data['Image']['size'] = $this->data['Image']['File']['size']; 
       $this->data['Image']['data'] = $fileData; 
       $this->data['Image']['people_id'] = $idp; 

       $this->Image->save($this->data); 

       $this->redirect(array('controller' => 'People', 'action' => 'welcome',$mac)); 

      } 

     } 

내가 양식을 확인할 때,이 매개 변수 $의 IDP 및 $ 맥 .. 모두 잃고 나는 그들이 지속 어떻게 할 수 있습니까?

당신은 당신의 폼 요소에 다음을 추가해야합니다

<?php 
    echo $form->create('Image', array('action' => 'add', 'type' => 'file')); 
    echo $form->file('File'); 
    echo $form->submit('Upload'); 
    echo $form->end(); 
?> 
+0

유효성을 검사하십시오. '$ mac'는'if' 내부에서 스코프를 잃어서는 안됩니다. 전에 뭔가가 일어나고 있습니다. –

+0

답변에 대한 자세한 내용이 필요합니다. '$ mac'는이 예제에서 어디에도 가지 않습니다. 그것이 정확히 사라질 때? – deceze

답변

1

보기 : 기본적으로

echo $form->create('Image', array('type' => 'file', 'url'=>$this->Html->url())); 

$ this-> HTML :

'url'=>$this->Html->url() 

그래서 양식이 모양을 -> url() 매개 변수를 사용하여 현재 url을 가져오고 양식의 액션에 전달하고 동일한 액션으로 제출하면 (예 : 일반적으로) 매개 변수를 그대로 유지해야합니다.

HTH