Cakephp 3.x不使用表单更新记录

Cakephp 3.x不使用表单更新记录,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,在我的users/index页面中,我通过执行以下操作基本上列出了users表中的每个用户: <?php foreach ($users as $user): ?> <tr> <td><?= h($user->name) ?></td> <td><?= h($user->email) ?></td> <td><

在我的
users/index
页面中,我通过执行以下操作基本上列出了
users
表中的每个用户:

    <?php foreach ($users as $user): ?>
    <tr>
        <td><?= h($user->name) ?></td>
        <td><?= h($user->email) ?></td>
        <td><?= h($user->phone_nr) ?></td>
        <td><?= h($user->role)?></td>
    </tr>
    <?php endforeach; ?>
但是,它在表单之外不起作用,而且表显然不是表单

非常感谢您对如何解决问题的任何帮助或指导

编辑

根据要求,我提供了用于保存用户数据(如果从表单保存)的代码段:


一个非常简单的方法可以是下面描述的方法。它不使用Ajax,只使用一个简单的POST请求,这意味着当角色改变时页面会被重新加载

按如下方式修改您的视图:

<?php foreach ($users as $user): ?>
<tr>
    <td><?= h($user->name) ?></td>
    <td><?= h($user->email) ?></td>
    <td><?= h($user->phone_nr) ?></td>
    <td><?= h($user->role)?></td>
    <td>
        <?= $this->Form->postButton('Toggle Role',
            ['controller'=>'users','action'=>'toggle_role',$user->id,$user->role])?>
    </td>
</tr>
<?php endforeach; ?>
注意:代码未经测试,并且缺少错误处理


最好显示保存记录的代码……非常感谢您的评论。我已经更新了这个问题。代码只是烘焙代码。您知道如何使用实体对象并在其上设置数据吗?你应该从做教程开始,他们会教你基础知识。谢谢,但我真的知道基础知识。我只需要动态更新表单之外的记录,我在任何tutorial.WpDoe-ah中都找不到该记录,所以您在一个表单中提出了4个问题。我想这就是问题所在。试着将其分解为“如何在不使用表单的情况下将数据从视图获取到控制器?”和/或“如何访问未通过表单提交的控制器中的数据?”等问题。问题是,现在您正在询问如何完成整个任务,这听起来像是要求为您编写代码。
public function add()
{
    $user = $this->Users->newEntity();
    if ($this->request->is('post')) {
        $user = $this->Users->patchEntity($user, $this->request->data);

        if ($this->Users->save($user)) {             
            $this->Flash->success(__('The user has been saved.'));
            return $this->redirect(['action' => 'index']);
        } else {
            $this->Flash->error(__('The user could not be saved. Please, try again.'));
        }
    }
}
<?php foreach ($users as $user): ?>
<tr>
    <td><?= h($user->name) ?></td>
    <td><?= h($user->email) ?></td>
    <td><?= h($user->phone_nr) ?></td>
    <td><?= h($user->role)?></td>
    <td>
        <?= $this->Form->postButton('Toggle Role',
            ['controller'=>'users','action'=>'toggle_role',$user->id,$user->role])?>
    </td>
</tr>
<?php endforeach; ?>
public function toggle_role($id,$existing_role){

    $users = TableRegistry::get('Users');
    $user = $users->get($id);
    $user->role = ($existing_role == 'admin')?'user':'admin';
    $users->save($user);
    return $this->redirect($this->referer());
}