HTML提交不发送正确的数据

时间:2014-06-20 08:14:24

标签: php html smarty

我的问题可能看起来很容易,但是我无法找到我做错的事。

我一直在HTML中使用我的表单和我的提交按钮,但是,表单并没有发送所有内容。它只发送一小部分数据。 这是我的表格;

  <form id="page_access" name="page_access" class="form-horizontal" data-parsley-validate method="post">
            <div class="form-group">
                <label class="col-sm-2 control-label" for="currency">User</label>
                <div class="col-sm-9">
                    <select class="form-control" name="user">
                        {foreach $users as $user}
                            <option value="{$user.id}">{$user.voornaam} {$user.tussenvoegsel} {$user.achternaam}</option>
                        {/foreach}
                    </select>
                </div>
            </div>

            <br/>

            <div class="form-group">
                <div class="col-md-12 col-sm-12 col-xs-12">
                    <table class="table table-bordered">
                        <thead>
                        <tr>
                            <th>Page</th>
                            <th>Index</th>
                            <th>Add</th>
                            <th>Edit</th>
                        </tr>
                        </thead>
                        <tbody>
                        {foreach $pages as $page}
                            <tr>
                                <td>{$page.nav_name}</td>
                                <td><input type="checkbox" {$page.access} value="page_{$page.id}"></td>
                                {if $page.0.id}
                                <td><input type="checkbox" {$page.0.access} value="page_{$page.0.id}"></td>
                                {else}
                                 <td></td>
                                {/if}
                                {if $page.1.id}
                                <td><input type="checkbox" {$page.1.access} value="page_{$page.1.id}"></td>
                                {else}
                                <td></td>
                                {/if}
                            </tr>
                        {/foreach}
                        </tbody>
                    </table>
                </div>
            </div>
            <div class="row">
                <div class="col-md-12 m-t-20 m-b-40 align-center">
                    <button type="submit" value="page_access" id="page_access" name="page_access" class="btn btn-success m-t-10">
                        <i class="fa fa-check"></i> {$LANG.edit_button}
                    </button>
                </div>
            </div>
            </form>

我使用smarty作为模板引擎。 smarty生成的所有信息都正常工作。

这是我的PHP来捕获数据:

if($_POST['page_access']){

var_dump($_POST);die;
$settings = new Settings();
$validation = $settings->ValidatePageSettings($array);


if(is_array($validation)){
    $result = $settings->EditPageSettings($validation);
    if($result > 0) {
        $smarty->assign("added_id", $result);
    }
}else{
    $smarty->assign("errormsg", $validation);
}
}

我的代码结果:

array(2) { ["user"]=> string(4) "2129" ["page_access"]=> string(11) "page_access" }

我想要的结果是获取每个页面ID,访问1为0。 相反,它只会返回1页。

1 个答案:

答案 0 :(得分:0)

您只需在复选框中添加name属性即可。

例如,对于循环中的第一个复选框而不是

<input type="checkbox" {$page.access} value="page_{$page.id}">

你需要

<input type="checkbox" name="checkbox_1" {$page.access} value="page_{$page.id}">
                       ^

这样,当您单击“提交按钮”

时,将发送数据

修改

这可能是你想要的:

{foreach $pages as $page}
    <tr>
        <td>{$page.nav_name}</td>
        <td><input type="checkbox" name="{$page.nav_name}[index]" value="1"></td>
        {if $page.0.id}
        <td><input type="checkbox" name="{$page.nav_name}[add]" value="1"></td>
        {else}
         <td><input type="checkbox" name="{$page.nav_name}[add]" value="0"></td>
        {/if}
        {if $page.1.id}
        <td><input type="checkbox" name="{$page.nav_name}[edit]" value="1"></td>
        {else}
        <td><input type="checkbox" name="{$page.nav_name}[edit]" value="0"></td>
        {/if}
    </tr>
{/foreach}