Прежде всего, вы можете уменьшить строку кода.
Пример:
$visitor = [
'insured' => $this->request->getData('insured'),
'children' => $this->request->getdata('children'),
'name' => $this->request->getdata('name'),
'mobile' => $this->request->getdata('mobile'),
'age' => $this->request->getdata('age'),
'gender' => $this->request->getdata('gender'),
'pincode' => $this->request->getdata('pincode'),
];
Пока вы создаете ajax вызов в редактировании, затем торт php fla sh не требуется, удалите их
$this->Flash->success(__('Details Updated of user ID:'.$id.'.')); // delete
$this->Flash->success(__('Details Updated of user ID:'.$id.'.')); //delete
и следуйте коду.
if ($this->request->is('post')) {
$visitor = [
'insured' => $this->request->getData('insured'),
'children' => $this->request->getdata('children'),
'name' => $this->request->getdata('name'),
'mobile' => $this->request->getdata('mobile'),
'age' => $this->request->getdata('age'),
'gender' => $this->request->getdata('gender'),
'pincode' => $this->request->getdata('pincode')
];
$visitor_table = TableRegistry::get('healthvisitors');
$visit = $visitor_table->get($id);
$status = []; // status array created
$visitor = $visitor_table->patchEntity($visit, $visitor);
if ($visitor_table->save($visitor)) {
$status = ["code" => 200, "message" => "Edit success"];
//$this->Flash->success(__('Details Updated of user ID:'.$id.'.'));
// return $this->redirect(['action' => 'Index']); // redirect not needed on ajax call
} else {
// $this->Flash->error(__('Somthing wrong. Please, try again!!!!'));
$status = ["code" => 201, "message" => "Something went wring"];
}
die(json_encode($status)); //exit with echo
}
и ваш ajax вызов:
$.ajax({
type: "POST",
url: `<?= $this->Url->Build(["action"=>"Edit",$id]) ?>`, //generate cakephp url
data: $("#your_edit_form_id").serializeArray(),
success: function (data) {
data = JSON.parse(data);
if (data.code == 200) {
//success work
alert(data.message);
} else if (data.code == 201) {
// error work
alert(data.message);
} else {
// something went wrong
}
}
});
И для вашей функции удаления: Контроллер
public function delete($id = null)
{
$this->request->allowMethod(['post', 'delete']);
$visitor_table = TableRegistry::get('healthvisitors');
$visit = $visitor_table->get($id);
if ($this->Settings->delete($visit)) {
$status = ["code" => 200, "message" => "Delete success"];
} else {
$status = ["code" => 201, "message" => "Error"];
}
die(json_encode($status));
}
редактировать .ctp
echo "<td><button class='delete' value='$id' type='button'>Delete</button></td></tr>";
В вашем ajax
$(document).on('click','.delete',function(){
var id= $(this).val();
$.ajax({
type: "DELETE",
url: `<?= $this->Url->Build(["action"=>"delete"]) ?>/${id}`, //generate cakephp url
success: function (data) {
data = JSON.parse(data);
if (data.code == 200) {
//success work
alert(data.message);
} else if (data.code == 201) {
// error work
alert(data.message);
} else {
// something went wrong
}
}
});
});