如何从表单中获取多个数据?

时间:2013-04-15 13:19:14

标签: php forms symfony-1.4

我有两个添加的表格。在第一个,我选择一个客户端,为他我添加几个域名。 然后,当我到下一个时,我到达了第二个表单,其中每行有几个域名(我之前添加),每个域都有其他字段(registar,url和remark)。它似乎是这样的:

  

toto.com | Directnic | www.toto.com | blablabla
  toto.fr | Afnic | 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)仅返回表单的最后一行

  

数组([compte_registar_id] =&gt; 1 [url] =&gt; www.toto.net [remarque] =&gt; blabla [nom_domaine] =&gt; toto.com toto.fr toto.net [client_id] =&gt ; 17 [_csrf_token] =&gt; ...)

谢谢!

1 个答案:

答案 0 :(得分:0)

当多个表单元素具有相同名称时,将仅采用最后一个。

您是否看到cou可以直接发送数组?

<inut type="text" name="foobarlist[]">
<inut type="text" name="foobarlist[]">
<inut type="text" name="foobarlist[]">

$ _ GET ['foobarlist']将返回一个包含3个元素的数组。

括号是关键。