Загрузка изображений Symfony

Я не могу найти, почему мой код работает неправильно. Я пытаюсь загрузить изображение через форму и сохранить ее в каталоге, но она не существует. Для теста я сделал эхо в объекте файла из формы, чтобы отобразить имя файла и расширение и его правильное, но не сохранить.

Вот мой код:

Форма:

class WgrajForm extends sfForm
{
  public function configure()
  {
    $this->setWidgets(array(
      'zdjęcie' => new sfWidgetFormInputFile(),
      'nazwa'   => new sfWidgetFormInput(),
    ));

     $this->setValidators(array(
        'zdjęcie'    =>  new sfValidatorFile(array(
          'mime_types' => 'web_images',
          'path'       => '/projektSymfony/web/images',
        ),array(
          'mime_types' => 'Plik może być tylko zdjęciem'
        )
      ),
      'nazwa' => new sfValidatorString(array(), array('required' => 'pole wymagane')),
    ));

    $this->getWidgetSchema()->setNameFormat('wgraj[%s]');
  }
}

Действие:

public function executeDodaj(sfWebRequest $request)
{
  $this->form= new WgrajForm();

  if ($request->isMethod('post'))
  {
    $this->form->bind(
    $request->getParameter('wgraj'),
    $request->getFiles('wgraj'));

    if ($this->form->isValid())
    {
      $wgrane       = $this->form->getValues();
      $plik         = $wgrane['zdjęcie'];
      $pliknazwa    = $wgrane['nazwa'];
      $rozszerzenie = $plik->getExtension($plik->getOriginalExtension());
      $plik->save('/projektSymfony/web/images/'.$pliknazwa.$rozszerzenie);
      //$this->redirect('galeria/index');
    }
  }
}
2
nl ja de

1 ответы

Параметр path лучше, если вы используете sfConfig :: get ('sf_upload_dir') или sfConfig :: get ('sf_web_dir') в своем дело.

Вам не нужно сохранять() виджет внутри вашего действия. Вам просто нужно сохранить форму, и затем она сохранит ваш образ.

if ($this->form->isValid())
{
  $this->form->save();

  $this->redirect('galeria/index');
}

Взгляните на документацию, вы найдете много информации, особенно часть учебника Jobeet о форме .

0
добавлено
@ 1ed Хорошая точка.
добавлено автор j0k, источник
это sfForm , поэтому у него нет метода сохранения
добавлено автор 1ed, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

symfony
symfony
1 045 участник(ов)

Сообщество Symfony, Symfony Components, Symfony Framework. Вакансии: https://t.me/symfony_careers Официальный slack: https://symfony.com/slack-invite

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

symfony
symfony
354 участник(ов)

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp