Symfony 1.4 не может получить отправленные файлы - PullRequest
0 голосов
/ 28 апреля 2011

должно быть что-то просто решаемое, но как новичок я уже потратил 2 дня, пытаясь выяснить это. У меня есть простая форма ("enctype =" multipart / form-data ") с несколькими входами текста и файла. Я не могу понять, что не так, я могу получить текстовые данные пользователя через getParameter (), но не могу получить файл getFiles (). Я нахожусь на Ubuntu 11.04 php5.3

код:

класс формы:

public function configure()
  {
    $this->setWidgets(array(
      'vendor'  => new sfWidgetFormInputText(array(), array('class' => 'form-text')),
      'image'       => new sfWidgetFormInputFile(array(), array('class' => 'form-text')),
      'city'      => new sfWidgetFormInputText(),
      'email'   => new sfWidgetFormInputText(array('default' => 'simple@sample.org')),
        'contacts' => new sfWidgetFormTextarea(),
      'description' => new sfWidgetFormTextarea(),
    ));
    $this->setValidators(array(
      'vendor'  => new sfValidatorString(array('required' => false)),
        'image'   => new sfValidatorFile(array(
            'required'  => false,
        'path'       => sfConfig::get('sf_upload_dir') . '/images',
        'mime_types' => 'web_images')),
      'city'    => new sfValidatorString(array('required' => false)),
        'email' => new sfValidatorString(array('required' => false)),
        'contacts'  => new sfValidatorString(array('required' => false)),
        'description'   => new sfValidatorString(array('required' => false)),
    ));
    $this->widgetSchema->setNameFormat('pv[%s]');
  }

Действие:

public function executeCreate(sfWebRequest $request)
{
$this->forward404Unless($request->isMethod(sfRequest::POST));
return $this->renderText(var_dump($request->getParameter('pv'))); //this array include vars from form
//return $this->renderText(var_dump($request->getFiles('pv'))); //empty array
}

Ответы [ 4 ]

0 голосов
/ 22 мая 2013

вы должны добавить в форму атрибут enctype = "multipart / ..."

0 голосов
/ 28 апреля 2011

Ваша конфигурация виджета формы выглядит примерно так?

$this->setWidget('attachment', new sfWidgetFormInputFileEditable(array(
  'file_src' => '/upload/' . $this->getObject()->getAttachment(),
  'edit_mode' => true,
  'with_delete' => true,
)));

$this->setValidator('attachment', new sfValidatorFile(array(
  'path' => sfConfig::get('sf_upload_dir'),
  'required' => false
)));
$this->setValidator('attachment_delete', new sfValidatorPass());

Кроме того, проверьте, есть ли у вас разрешения для папки загрузки:

chmod 777 web/upload/
0 голосов
/ 29 апреля 2011

Связываете ли вы файлы и параметры формы, например?

$this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));
0 голосов
/ 28 апреля 2011

Вы должны предоставить действительный код, который вы пытаетесь использовать. Вы также можете заглянуть в компонент форм, в котором есть раздел о загрузке файлов с примером кода здесь (внизу страницы):

http://www.symfony -project.org / форма / 1_2 / а / 02-Form-Validation

Эта часть документов по-прежнему актуальна для Symfony 1.4.

...