Вам не хватает важной части, которая связывает значения с формой:
public function executeAdd(sfWebRequest $request)
{
$this->form = new ImageForm();
if ($request->isMethod('post'))
{
// you need to bind the values and files to the submitted form
$this->form->bind(
$request->getParameter($this->form->getName())
$request->getFiles($this->form->getName())
);
// then check if its valid - if it is valid the validator
// should save the file for you
if ($this->form->isValid())
{
// redirect, render a different view, or set a flash message
}
}
}
Однако вы хотите убедиться, что вы установили формат имени для своей формы, чтобы вы могли получить значения ифайлы в моде ... В вашем методе configure вам нужно вызвать setNameFormat
:
public function configure()
{
// other config code
$this->widgetSchema->setNameFormat('image[%s]');
}
Также в configure
вам не нужно вызывать parent::setUp()
... Это вызывается автоматически ина самом деле то, что вызывает метод configure
.
LLstly, вам нужно исправить разметку - вы выберете имя формы из вашего тега:
<form action="<?php echo url_for('@images_add') ?>" name="<?php echo $form->getName() ?>" method="POST" enctype="multipart/data">
Лично мне нравится использовать формуобъект для генерации, а также он выглядит чище на мой взгляд:
<?php echo $form->renderFormTag(
url_for('@images_add'),
array('method' => 'post') // any other html attriubutes
) ?>
Он будет обрабатывать атрибуты кодировки и имени в зависимости от того, как вы настроили форму.