javascript - CakePHP 动态表单输入

标签 javascript php jquery cakephp

我正在使用 CakePHP 2.3.8,我正在尝试创建一个表单,其中动态添加来自 this tutorial 的输入。但我有一些问题。添加和删​​除输入工作得很好,但是当我提交表单时,我收到一条黑洞错误消息。检查输入后,似乎没有正确设置键值并导致输入的 id 出现一些问题。

例如,在元素中使用此代码

//Elements/users.ctp
$key = isset($key) ? $key : '<%= key %>';

<tr>
    <td><?php echo $this->Form->input("Role.{$key}.user_id", array('options' => $users, 'label' => false)); ?></td>
    <td class="actions">
        <a href="#" class="remove">Remove User</a>
    </td>
</tr>

这是生成的选择

<select name="data[Role][0][user_id]" id="Role<%=Key%>UserId">

编辑

$key 的值已在/Elements/users.ctp 上正确设置。我可以创建一行并回显 $key 的输出,并且该行的数字正确显示。正如您在上面看到的,元素的名称设置正确,但 id 的设置仍然很奇怪。

正确设置了选择元素的名称,但未正确设置 id。 是什么导致选择 id 为 Role<%=Key%>UserId而不是Role0UserId

最佳答案

问题:

如果您观察您发布的相关生成的选择标签,它会显示

<%=Key%>

您正在使用的教程使用的下划线库所需的变量是

<%= key %>

CakePHP 表单输入正在替换该下划线变量的 html 字符和空格,因此下划线库无法检测到它。

解决方案:

为了解决该问题,您必须在模板部分使用纯 html 代码。你的grades.ctp必须如下所示(部分代码用于理解)

<?php if (isset($key)) : ?>
    <tr>
        <td>
            <?php echo $this->Form->input("Grade.{$key}.id") ?>
            <?php echo $this->Form->input("Grade.{$key}.subject", array('label' => false)); ?>
        </td>   
    </tr>
    ...rest of the code
<?php else: ?>
    <tr>
        <td>
            <input type="hidden" id="Grade<%= key %>Id" name="data[Grade][<%= key %>][id]">     
            <div class="input text required">
                <input type="text" required="required" id="Grade<%= key %>Subject" maxlength="200" name="data[Grade][<%= key %>][subject]">
            </div>
        </td>
        ...rest of the code
    </tr>
<?php endif; ?>

关于javascript - CakePHP 动态表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32319517/

相关文章:

javascript - 在元素内 react 转义变量

javascript - React 中至少有一个必需的 prop

php - PHP 中使用 LIKE 和 WHERE 查询进行选择

php - 如何将 php 数组与 sql IN 运算符一起使用?

javascript - 单击图像时触发 Brightcove 视频播放,并在视频播放完毕后将其隐藏

javascript - 是否有任何类似于 Whatever :hover htc? 的 jquery 插件或技术

javascript - 如何仅将 CSS 样式应用于选定的行?

javascript - JQuery 使 ajax 选项动态化

php - 注意:尝试获取C:\xampp\htdocs\中非对象的属性

javascript - 如何将 HTML 文件转换为 GIF