Качване на файл в Symfony - масив, съхраняван в базата данни вместо действителното име на файл

Използвам Symfony 1.4.4 и Doctrine и трябва да кача изображение на сървъра.

Правил съм го стотици пъти без никакъв проблем, но този път се случва нещо странно: вместо името на файла да се съхранява в базата данни, намирам низа „Масив“.

Ето какво правя:

В моя формуляр:

$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') връща низа "Масив".

Случвало ли се е на някой от вас или виждате нещо нередно в моя код?

Редактиране: Добавих факта, че вграждам друг формуляр, което може да е проблемът (вижте кода на формуляра по-горе).


person Guillaume Flandre    schedule 29.04.2010    source източник


Отговори (2)


Добре, разбрах. Не декларирах правилно своя валидатор.

Това, което трябваше да направя е:

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

Глупава грешка, надявам се, че ще помогне на тези, които имат същия проблем.

person Guillaume Flandre    schedule 30.04.2010
comment
Благодаря Беше доста полезно...Тъй като имах същия проблем и се оправи, когато използвах вашата версия...! :D :P - person Umair Shah Yousafzai; 21.04.2017

Като алтернатива можете да използвате;

$this->validatorSchema['filename']

на мястото на;

$this->setValidator['filename']
person Lashae    schedule 01.07.2010
comment
Докато използвах validatorSchema, имах проблема... Разреших се, когато използвах горната версия на отговора..! - person Umair Shah Yousafzai; 21.04.2017