2010-04-29 5 views
3

Symfony 1.4.4와 Doctrine을 사용 중이며 서버에 이미지를 업로드해야합니다.Symfony 파일 업로드 - 실제 파일 이름 대신 데이터베이스에 "Array"가 저장됩니다.

나는 수백 번 아무런 문제없이이 일을했지만 이상한 일이 발생합니다. 파일 이름이 데이터베이스에 저장되는 대신 "Array"문자열을 찾습니다. 내 형태로

:

$this->useFields(array('filename')); 
$this->embedI18n(sfConfig::get('app_cultures')); 

$this->widgetSchema['filename'] = new sfWidgetFormInputFileEditable(array(
     'file_src' => '/uploads/flash/'.$this->getObject()->getFilename(), 
     'is_image' => true, 
     'edit_mode' => !$this->isNew(), 
     'template' => '<div id="">%file%</div><div id=""><h3 class="">change picture</h3>%input%</div>', 
    )); 

    $this->setValidator['filename'] = new sfValidatorFile(array(
     'mime_types' => 'web_images', 
     'path' => sfConfig::get('sf_upload_dir').'/flash', 
    )); 

내 행동 :

는 여기에 내가 뭘하는지의

public function executeIndex(sfWebRequest $request) 
    { 
     $this->flashContents = $this->page->getFlashContents(); 

     $flash = new FlashContent(); 
     $this->flashForm = new FlashContentForm($flash); 

     $this->processFlashContentForm($request, $this->flashForm); 

    } 

protected function processFlashContentForm($request, $form) 
    { 
     if ($form->isSubmitted($request)) { 
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName())); 
    if ($form->isValid()) { 
    $form->save(); 
    $this->getUser()->setFlash('notice', $form->isNew() ? 'Added.' : 'Updated.'); 
    $this->redirect('@home'); 
    } 
} 
    } 

모든 게 잘, $request->getFiles($form->getName()) 반환, 내 파일을 내 매개 변수를 바인딩하기 전에. 그러나 나중에 $form->getValue('filename') 문자열 "배열"을 반환합니다.

여러분 중 누구에게 일어 났습니까? 아니면 내 코드에 문제가있는 것을 보았습니까?

편집 : 내가 다른 양식을 포함하고 있다는 사실을 추가했습니다 (위 양식 코드 참조)

답변

3

좋아, 알았다. 유효성 검사기를 올바르게 선언하지 않았습니다. 내가했던해야합니까

은 다음과 같습니다

$this->setValidator('filename', new sfValidatorFile(array(
    'mime_types' => 'web_images', 
    'path' => sfConfig::get('sf_upload_dir').'/flash', 
))); 

어리석은 실수, 나는 그 같은 문제가 사람들에게 도움이되기를 바랍니다.

+0

고마워 아주 도움이되었습니다 ... 귀하의 버전을 사용했을 때 동일한 문제가 있었고 해결되었습니다. : D : P –

0

또는;

$this->validatorSchema['filename'] 

대신;

$this->setValidator['filename'] 
+0

'validatorSchema'를 사용하는 동안 문제가 발생했습니다 ... 위의 대답 버전을 사용할 때 해결되었습니다 ..! –

관련 문제