【问题标题】:How to get a $_POST from view module? [duplicate]如何从视图模块中获取 $_POST? [复制]
【发布时间】:2015-05-02 13:22:09
【问题描述】:

我想从视图模块中的表格中获取复选框,但我无法让它工作。这是表格:

     <form action="" method="post">
     <TABLE id="dt_basic" class="table table-striped table-bordered table-hover dataTable">
        <THEAD>
          <TR>
            <TH></TH>
            <TH>ID</TH>
            <TH>Client</TH>
            <TH>User</TH>
            <TH>Role</TH>
            <TH>Projects</TH>
          </TR>
        </THEAD>
        <TBODY>
<?php
/* @var $item Admin\Model\User */
foreach ($this->users as $item) {
    ?>
    <TR>
        <TD class='admin'><input type="checkbox" name="users[]" value="<?php echo $item->id; ?>" class="users" checked/></TD>
        <TD class='admin c'><?= $item->id ?></TD>
        <TD class='admin'><?= $item->getClientObject() ?></TD>
        <TD class='admin'>
            <img src="<?= $item->getAvatarPath() ?>" alt="me" class="online avatar"/>
            <a title='details'
               href='/admin/user/detail/id/<?= $item->id ?>'><?= $item->name . " " . $item->surname ?> </a>
        </TD>
        <TD class='admin'><?= $item->getRoleObject() ?></TD>
        <TD class='admin'>
            <a title='projects' class='btn btn-default btn-sm'
               href='/admin/user/project/id/<?= $item->id ?>'><i
                    class='fa fa-icon-fix fa-briefcase'></i></a>
            <?
            foreach ($this->projects[$item->id] as $i => $project) {
                echo $project->getName();
                if ($i != sizeof($this->projects[$item->id]) - 1)
                    echo " • ";
            }
            ?>
        </TD>
    </TR>
<?php
}
?>
        </TBODY>
      </TABLE>
    </form>

我想获取users[] 数组并在控制器中使用它的元素,但是我找不到获取它的方法,有什么建议吗?

【问题讨论】:

  • 为每个字段赋予不同且唯一的名称。

标签: php html forms zend-framework zend-framework2


【解决方案1】:

您应该按如下方式替换该行:

<TD class='admin'><input type="checkbox" name="users[<?php echo $item->id; ?>]" class="users" checked/></TD>

通过这种方式,您将收到键为 id-s,但值为“on”的用户。您只会收到选中的用户。

关于下面的问题:

if (!empty($_POST["users"])) {
    foreach (($_POST["users"]) as $selectedUsers=>$blabla) {
        $users = $this->getUserTable()->fetchAll(false, "id=" .  $selectedUsers);
    }
}

【讨论】:

  • 那么之后我在控制器中写了这个? if (!empty($_POST["users"])) { foreach (($_POST["users"]) as $selectedUsers) { //Do something }
  • 我已添加 - 我的答案中的代码 - $selectedUser 必须是键,而不是值 - 我已添加更正您的代码
  • 如果您没有检查任何人,它将为空
  • print_r($_POST) 看看会发生什么
  • 看起来是这样的:i.imgur.com/f6NOwg0.png我没有在表单中设置任何操作,也许这就是问题?
猜你喜欢
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2020-12-26
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 2011-06-27
相关资源
最近更新 更多