我正在尝试将Ajax数据存储到cakephp 3.8中的数据库中。
数据如下:
数据代表2个选中的复选框,带有隐藏的输入。
我正在使用以下ajax代码:
var formData = menuItem;
var formUrl = $('#nav-menu-meta').attr('action');
$.ajax({
type: 'POST',
url: formUrl,
data: formData,
success: function(response,textStatus,xhr) {
console.log('test ', response);
},
error: function(xhr,textStatus,error) {
console.error(textStatus, error);
}
});
public function addmenuitems() {
if ($this->request->is('ajax')) {
$this->autoRender = false;
$this->response->disableCache();
}
if ($this->request->is('post')) {
$menuitemTable = TableRegistry::getTableLocator()->get('menuitems');
$menuitems = $menuitemTable->newEntities($this->request->getData());
foreach ($menuitems as $menuitem) {
if ($menuitemTable->save($menuitem)) {
$response = $this->response->withType('application/json')
->withStringBody(json_encode($menuitem));
return $response;
}else{
$message = 'Error';
}
}
}
}
数据根本没有保存,那我想念什么?
我从getData()函数中添加了调试数据数组,以显示该数组包含的内容:
/src/Controller/Admin/Web/MenusController.php (line 109)
[
(int) 0 => object(App\Model\Entity\MenuItem) {
'menu_item_object_id' => (int) 2,
'menu_item_title' => 'Home',
'menu_item_slug' => 'home',
'menu_item_parent_id' => (int) 0,
'menu_item_target' => false,
'menu_item_position' => (int) 0,
'[new]' => true,
'[accessible]' => [
'*' => true,
'id' => false,
'menu-item-object_id' => true,
'menu-item-parent_id' => true,
'menu-item-position' => true,
'lft' => true,
'rght' => true,
'menu-item-title' => true,
'menu-item-slug' => true,
'menu-item-target' => true
],
'[dirty]' => [
'menu_item_object_id' => true,
'menu_item_title' => true,
'menu_item_slug' => true,
'menu_item_parent_id' => true,
'menu_item_target' => true,
'menu_item_position' => true
],
'[original]' => [],
'[virtual]' => [],
'[hasErrors]' => false,
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'menuitems'
},
(int) 1 => object(App\Model\Entity\MenuItem) {
'menu_item_object_id' => (int) 3,
'menu_item_title' => 'Nieuw',
'menu_item_slug' => 'nieuw',
'menu_item_parent_id' => (int) 0,
'menu_item_target' => false,
'menu_item_position' => (int) 0,
'[new]' => true,
'[accessible]' => [
'*' => true,
'id' => false,
'menu-item-object_id' => true,
'menu-item-parent_id' => true,
'menu-item-position' => true,
'lft' => true,
'rght' => true,
'menu-item-title' => true,
'menu-item-slug' => true,
'menu-item-target' => true
],
'[dirty]' => [
'menu_item_object_id' => true,
'menu_item_title' => true,
'menu_item_slug' => true,
'menu_item_parent_id' => true,
'menu_item_target' => true,
'menu_item_position' => true
],
'[original]' => [],
'[virtual]' => [],
'[hasErrors]' => false,
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'menuitems'
}
]