2013-08-15 1 views
1

템플리트 파트를 통해 사용자 정의 HTML 양식을 생성하는 모듈을 사용합니다.맞춤형으로 생성 된 심포니 1.4 양식을 사용하여 파일 업로드하기

양식의 4 가지 파일 업로드를 관리해야합니다.

$allData = $request->getParameterHolder()->getAll(); 

나에게 업로드 된 파일 이름을 얻을 것이다, 그러나 나는 또한 업로드 디렉토리에이 파일을 저장해야합니다 행동에서

나는과 같이 모든 필드 데이터를 당깁니다.

나는과 같이 양식을 결합하려고 :하는데 성공 $attachments 객체를 생성

if(isset($customData['getAttachments']) && count($allData)){ 
     $attachments = $formInput->bind($request->getParameter('forms_input'), $request->getFiles('forms_input')); 
} 

합니다. 그에 정신 검사를 덤프하는 var_dump($attachments);die;입니다 :

object(FormsInput)#225 (18) { ["_node":protected]=> NULL ["_id":protected]=> array(1) { ["id"]=> string(5) "32171" } ["_data":protected]=> array(6) { ["id"]=> string(5) "32171" ["form_uid"]=> string(32) "aef79b2d47722ca154788cc9c8f8de2b" ["data_array"]=> string(770) "a:20:{s:9:... 

어떻게 파일을 추출하여 디렉토리에 밀어. 나는이 시도 :

$file = $attachments->getValue('file'); 
    if($file) { 
    $filename = sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension()); 
    $file->save(sfConfig::get('sf_upload_dir').'/'.$formTitle.'/'.$usrDir.''.$filename); 
} 

을하지만이 오류가 발생합니다 :

Unknown record property/related component "value" on "FormsInput" 

가 어떻게이 (가) 김포 디렉토리에 업로드 얻을 수 있습니까?

UPDATE

는 sfValidatorFile 클래스를 사용하려고하지만 난 $ 첨부 객체에서 그것을 매개 변수를 전달하는 방법을 알아낼 수 없습니다 :

$file = new sfValidatorFile(); 
if($file) { 
$filename = sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension()); 
$file->save(sfConfig::get('sf_upload_dir').'/uploadedDir'); 
} 

던졌습니다이 :

Fatal error: Call to undefined method sfValidatorFile::save() 

답변

3

$ file-> save로 수행하려는 작업은 이어야합니다. sfValidatedFile 목적. FormsInput이 sfFormObject의 인스턴스 인 경우 4 sfValidatorFile 옵션을 사용하여 양식을 구성 할 수 있습니다. 그것은 당신이 필요로하는 일을 할 것입니다.

+0

저는 전통적인 방식으로 sf 양식을 사용하지 않습니다. FormsInputForms 클래스에서 위젯을 정의하지 않습니다. html로 부분 형식을 사용하고 그 형식 데이터를 직렬화합니다. $ 첨부 파일에는 파일 정보가 있지만 $ 첨부 파일에서 파일을 추출하여 dir에 보내는 방법을 여전히 모릅니다. 위의 업데이트 된 코드보기 –

+0

폼 기능을 사용하지 않는 경우 파일을 "전통적인 PHP 방식"('_FILES' 및'move_uploaded_file()')으로 저장하십시오. 사실, 위젯과 검증을 사용하지 않는다면 왜 Symfony 양식을 사용합니까? 그것은 단지 이해가되지 않습니다. –

+0

많은 응용 프로그램에서 우리는 Symfony 양식 기능을 사용합니다. 이것은 다른 방법을 사용해야하는 특정한 경우입니다. –