1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
class AuteurForm extends BaseAuteurForm
{
public function configure()
{
parent::configure();
$auteurArticle = new Article();
$auteurArticle->setAuteur($this->getObject());
$formArticle = new ArticleForm($auteurArticle);
$this->embedForm('NewArticle', $formArticle);
...
}
public function addNewArticle($key)
{
$article = new Article();
$article->setAuteur($this->getObject());
$form = new ArticleForm($article);
$this->embeddedForms['NewArticle']->embedForm($key, $form);
$this->embedForm('NewArticle', $this->embeddedForms['NewArticle']);
}
public function bind(array $taintedValues = null, array $taintedFiles = null)
{
if (isset($taintedValues['NewArticle'])){
foreach($taintedValues['NewArticle'] as $key=>$new)
{
if (!isset($this['NewArticle'][$key]))
{
$this->addNewArticle($key);
}
}
}
parent::bind($taintedValues, $taintedFiles);
}
protected function doBind(array $values)
{
parent::doBind($values);
if ($this->isValid() && '' === trim($values['NewArticle']['ref']))
{
unset($values['NewArticle'], $this['NewArticle']);
}
}
.....
//controller
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$auteur = $form->save();
$this->redirect('auteur/show?id='.$auteur->getId());
}
} |
Partager