Я работаю над проектом с ZF2 и Zend Form. Я хотел бы добавить аватар в профиль пользователя.ZendForm: переместите изображение в папку
Проблема в том, что я получаю только имя файла и сохраняю его в БД. Я хотел бы вставить его в папку, чтобы я мог ее получить и отобразить. Остальная часть формы работает.
Я предполагаю, что мне нужно получить информацию от $ FILES, но я понятия не имею, как это сделать. Я прочитал документацию, но не могу понять, как применить ее к моему проекту.
Спасибо заранее!
Вот мой контроллер действий
public function signinAction()
{
$this->em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
$form = new SignupForm($this->em);
$model = new ViewModel(array("form" => $form));
$url = $this->url()->fromRoute("signin");
$prg = $this->prg($url, true);
if($prg instanceof \Zend\Http\PhpEnvironment\Response){
return $prg;
}
else if($prg === false){
return $model;
}
$user = new User();
$form->bind($user) ;
$form->setData($prg) ;
if($form->isValid()){
$bcrypt = new Bcrypt() ;
$pwd = $bcrypt->create($user->getPassword());
$user->setPassword($pwd);
$this->em->persist($user) ;
$this->em->flush() ;
return $this->redirect()->toRoute('login');
}
return $model ;
}
Вот мой файл формы:
class SignupForm extends Form
{
private $em = null;
public function __construct($em = null) {
$this->em = $em;
parent::__construct('frm-signup');
$this->setAttribute('method', 'post');
$this->setHydrator(new DoctrineEntity($this->em, 'Application\Entity\User'));
//Other fields
...
//File
$this->add(array(
'type' => "File",
'name' => 'avatar',
'attributes' => array(
'value' => 'Avatar',
),
));
//Submit
...
}
}
И форма, на мой взгляд:
$form = $this->form;
echo $this->form()->openTag($form);
//other formRow
echo $this->formFile($form->get('avatar'));
echo $this->formSubmit($form->get('submit'));
echo $this->form()->closeTag();
Спасибо за ваш ответ! Я, наконец, сделал это вчера, но мне больно в новой проблеме (здесь я задал новый вопрос: http://stackoverflow.com/questions/39874645/zend-form-call-to-undefined-method-zend-inputfilter- inputfiltergetfilterchai) из-за метода Zend \ InputFilter \ InputFilter :: getFilterChain(). Если у вас есть время, чтобы взглянуть, я был бы очень рад;) – KatharaDarko