Я использую 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')
возвращает строку «Массив».
Это случилось с кем-то из вас, ребята, или вы видите что-то не так с моим кодом?
Редактировать: Я добавил тот факт, что я встраиваю другую форму, что может быть проблемой (см. Код формы выше).