У меня есть две добавленные формы. Во-первых, я выбираю одного клиента, и для него я добавляю несколько имен доменов. Затем, когда я клик к следующему, я прибыл во вторую форму, в которой есть несколько доменных имен (я добавил раньше) в каждой строке с другими полями для каждого из них (registar, url и remark). Это выглядит так:Как получить несколько данных из формы?
toto.com | Прямой | www.toto.com | blablabla
toto.fr | Афник | www.toto.fr | bla
toto.net | Ганди | www.toto.net | blabla
Но когда я хочу восстановить эти данные в своем действии, чтобы добавить их в мою базу данных, я получаю только последнюю строку. Зачем ?
Моя форма:
<form action="<?php echo url_for('@add_domaines');?>" method="post">
<?php echo $form->renderGlobalErrors() ?>
<table class="form_add_domaines">
<thead>
<tr>
<th><?php echo $form['nom_domaine']->renderLabel()?></th>
<th><?php echo $form['compte_registar_id']->renderLabel() ?></th>
<th><?php echo $form['url']->renderLabel() ?></th>
<th><?php echo $form['remarque']->renderLabel() ?></th>
</tr>
</thead>
<tbody>
<?php
$domaines = explode("\n",$add_domaines);
for($i=0; $i<count($domaines); $i++)
{?>
<tr>
<td>
<?php
if(1==strcmp(' ', $domaines[$i]))
{
echo "<span style='color:red;'>"."<b>Warning, missing domain name.</b>"."</span>";
}
else
{
echo $domaines[$i];
}
?>
</td>
<td>
<?php echo $form['compte_registar_id']->renderError() ?>
<?php echo $form['compte_registar_id'] ?>
</td>
<td>
<?php echo $form['url']->renderError() ?>
<?php echo $form['url'] ?>
</td>
<td>
<?php echo $form['remarque']->renderError() ?>
<?php echo $form['remarque'] ?>
</td>
</tr>
<?php
}
?>
</tbody>
<tfoot>
<tr>
<td>
<?php echo link_to(__('Back', array(), 'sf_admin'), '@domaine_new') ?>
</td>
<td>
<?php echo $form->renderHiddenFields(false) ?>
<input type="submit" class="submit" value="Add" />
</td>
</tr>
</tfoot>
</table>
</form>
Мои действия:
[...]
$this->form = new AddDomainesForm();
$this->form->setDefault('client_id', $idClient);
$this->form->setDefault('nom_domaine', $noms_domaine);
if($request->isMethod('post'))
{
$name = $this->form->getName();
$values = $request->getParameter($name);
$files = $request->getFiles($name);
$this->form->bind($values, $files);
if($this->form->isValid())
{
print_r($values);break;
//$this->form->save();
$this->getUser()->setFlash('notice', 'OK.');
$this->redirect('@domaine');
}
}
print_r($values)
возвращение только последняя строка моей формы
Array ([compte_registar_id] => 1 [URL] => www.toto.net [remarque] => blabla [nom_domaine] => toto.com toto.fr toto.net [client_id] => 17 [_csrf_token] => ...)
Спасибо!
gimme the form HTML, plz –
Я добавил, посмотрите пожалуйста :) – 2013-04-15 13:52:29
Я думаю, вам нужно встроить 'AddDomainesForm' в другой (например, sfFrom). В документах объясняется [здесь] (http://symfony.com/legacy/doc/more-with-symfony/1_4/en/06-Advanced-Forms), как это сделать. – 1ed