problème de réaffichage d'un (ajax) embedded form en cas de données non valides
Bonjour,
j'ai un petit souci concernant l'affichage d'un embedded form lorsqu'il comporte des ereurs. En fait mes embedded forms sont rajoutés via une action ajax.
Voici mon code:
Pour info il s'agit d'une relation 1-n.
Code:
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());
}
} |
quand les valeurs rentrées dans les embedded form sont valides, elles sont bien stockées dans la base. Par contre en cas de présence d'erreur, l'embedded form ne se réaffiche pas au niveau du formulaire principal.
je ne comprends pas d'où ça vient, des méthodes Bind? du processForm? du template?..je suis un peu perdue :(
Merci pour votre aide!!