【发布时间】:2016-09-16 14:32:25
【问题描述】:
我正在编写一段代码来更改应用用户的权限。目前,每个权限一次添加一个,我正在修改它以更快地添加,能够一次选择多个权限添加。
复选框不会是相同的数字,因为它们只是用户尚未拥有的权限。它需要传递一个具有权限的 id。
问题是,我的复选框表单似乎没有向控制器发送任何数据。提交后,它只会加载一个带有控制器 url 的空白页面。
这是生成复选框表单的视图代码
<?php
if (!empty($lstAvailablePermissions)) {
$c=0;
echo $form->create('Administrator', array('action'=>'addPermission'));
echo $form->input('id');
foreach($lstAvailablePermissions as $key){
echo "<br>";
echo $form->input(
'permission',
array(
'id'=>$key,
'label'=>$key,
'type'=>'checkbox',
'multiple'=>'checkbox',
'value' => $key,
'name' =>'data[Administrator][permission]['.$c.']'
));
$c=$c+1;
}
echo $form->button(__('Add', true), array('type'=>'submit', 'class' => 'button', 'style'=>'padding: 2px; font-size: 12px;'));
echo $form->end();
}
?>
以及控制器中的方法
function AddPermission() {
if (empty($this->data)) { $this->RedirectWithFlash(__("Only POST Requests", true), "/administrators"); }
ErrorLogWarning("This is the form data sent to the controller", $this->data);
$length=count($this->data['Administrator']['permission']);
for ($i = 0; $i < $length; $i++){
$this->Acl->allow(
array('model' => 'Administrator', 'foreign_key' => $this->data['Administrator']['id']),
$this->data['Administrator']['permission'][$i]
);
}
$this->RedirectWithSuccessFlash(__("Permission added", true), array('action'=>'edit', $this->data['Administrator']['id']));
}
谁能帮我弄清楚发生了什么?我认为一旦数据进入控制器就需要循环遍历数据,但它现在甚至没有发送错误消息。
编辑:问题似乎已通过在表单 echo 的底部添加 name 属性得到解决,它将它作为可以在控制器中循环的数组发送。
【问题讨论】:
标签: php forms cakephp controller