将PHP变量传递到modal和AJAX的Html链接

将PHP变量传递到modal和AJAX的Html链接,php,html,cakephp,bootstrap-modal,Php,Html,Cakephp,Bootstrap Modal,在CakePHP3中,烘焙控制器有4个具有自己视图的函数:索引、添加、编辑和删除。我试图将Edit和View函数移到modals,但我需要PHP变量来确定要修改或查看的特定数据条目 我有一张名为“用户”的表格 在UsersController的索引函数中,我将定义以下变量: $users = $this->paginate($this->Users); $this->set(compact('users')); $this->set('_serialize', ['us

在CakePHP3中,烘焙控制器有4个具有自己视图的函数:索引、添加、编辑和删除。我试图将Edit和View函数移到modals,但我需要PHP变量来确定要修改或查看的特定数据条目

我有一张名为“用户”的表格

在UsersController的索引函数中,我将定义以下变量:

$users = $this->paginate($this->Users);

$this->set(compact('users'));
$this->set('_serialize', ['users']);
然后,在索引视图(Index.ctp)上,在表内部,我将执行以下操作:

<?php foreach ($users as $user): ?>
<tr>
    <td class="actions">
        <?= $this->Html->link(__('View'), ['action' => 'view', $user->id]) ?>
        <?= $this->Html->link(__('Edit'), ['action' => 'edit', $user->id]) ?>
    </td>
</tr>
<?php endforeach; ?>
或者,只需将其直接传递给模式,然后根据它获取每个表单字段的数据

然后对于编辑模式,在保存时,我将使用ajaxput进行保存

编辑模式:

<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
   <div class="modal-dialog" role="document">
       <div class="modal-content">
           <div class="modal-header">
               <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                   <span aria-hidden="true">&times;</span>
               </button>
               <h4 class="modal-title" id="myModalLabel">Edit</h4>
               <div>
                   <div class="col-sm-6">
                       <?= $this->Form->input('firstname', ['class' => 'form-control', 'label' => 'First Name', 'id' => 'firstname']); ?>
                   </div>
                   <div class="col-sm-6">
                       <?= $this->Form->input('lastname', ['class' => 'form-control', 'label' => 'Last Name', 'id' => 'lastname']); ?>
                   </div>
                </div>
            </div>
            <div class="modal-footer">
               <button type="button" class="btn btn-secondary" data-dismiss="modal">Close
               </button>
               <button id="savebutton" type="button" class="btn btn-primary" data-dismiss="modal">Save changes
               </button>
            </div>
        </div>
    </div>
</div>

&时代;
编辑
接近
保存更改

将id传递给您的链接,如下所示:

<?php foreach ($users as $user): ?>
<tr>
    <td class="actions">
        <?= $this->Html->link(__('View'), ['action' => 'view', $user->id]), ['id' => 'view', 'data-id' => $user->id]) ?>
        <?= $this->Html->link(__('Edit'), ['action' => 'view', $user->id]), ['id' => 'edit', 'data-id' => $user->id]) ?>
    </td>
</tr>
<?php endforeach; ?>

您需要使用视图上的

将用户ID传递给您的模型,我得到如下链接:
/project“name”
。例如,对于查看,链接显示为
/projectEdit
。当我单击链接时,它会将我带到不存在的目录(实际目录是
/project/users/edit
),尽管我想让它打开我的modal。如果我从操作中删除空值,链接将使用常规名称,URL如下:
/project/users/edit?id=view&data id=2
。同样,模式不会显示,它会刷新页面并将我发送到顶部。它适用于第一个数据条目,但不适用于后续的数据条目。用类替换id,使用类而不是ids对不起,链接现在转到模式,但仅适用于第一个数据条目。此外,表单输入不会基于$user->id变量的内容进行填充。
<?php foreach ($users as $user): ?>
<tr>
    <td class="actions">
        <?= $this->Html->link(__('View'), ['action' => 'view', $user->id]), ['id' => 'view', 'data-id' => $user->id]) ?>
        <?= $this->Html->link(__('Edit'), ['action' => 'view', $user->id]), ['id' => 'edit', 'data-id' => $user->id]) ?>
    </td>
</tr>
<?php endforeach; ?>
$(function () {
   $('#view').click(function (ev) {
        ev.preventDefault();
        var userId = $(this).attr('data-id');
        $('#viewModal').modal('show');
   });
});

$(function () {
   $('#edit').click(function (ee) {
        ee.preventDefault();
        var userId = $(this).attr('data-id');
        $('#editModal').modal('show');
   });
});