Как редактировать и удалять в cakephp3 используя ajax? - PullRequest
0 голосов
/ 30 марта 2020

Я новичок в php Не знаю, как использовать ajax в cakephp3, пожалуйста, кто-нибудь, помогите мне, я борюсь с этой проблемой с утра, снова и снова повторяю Google, но не могу реализовать это до сих пор, пожалуйста, расскажите мне о ajax код или дать мне идеальный ресурс, где я могу получить информацию об этом и быть в состоянии достичь этого

// ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ЭТО ИЗ Я учусь PHP и SQL и как стажер я работа над демонстрационной страницей, которая на самом деле является чем-то вроде целевой страницы для страхового домена. Я использую XAMP и phpmyadmin, где я создал простую базу данных с одним посетителем таблицы здоровья. Я могу добавить редактирование удалить, используя торт php, но не могу сделать то же самое с ajax, потому что ////////////// IGNORE HERE

Это контроллер helathvisitors. php и его действие редактировать и удалять

public function Edit($id)
 {
  if($this->request->is('post'))
  {           
   $healthAdult =  $this->request->getdata('insured');
   $idChildren  =  $this->request->getdata('children');
   $txtName     =  $this->request->getdata('name');
   $txtMobile   =  $this->request->getdata('mobile');
   $dropdownAge =  $this->request->getdata('age');
   $radioGender =  $this->request->getdata('gender');
   $txtPincode  =  $this->request->getdata('pincode');         


   $visitor_table = TableRegistry::get('healthvisitors');
   $visit = $visitor_table->get($id);
   $visitor['insured'] = $healthAdult;
   $visitor['children'] = $idChildren;
   $visitor['name'] = $txtName;
   $visitor['age'] = $dropdownAge;
   $visitor['gender'] = $radioGender;
   $visitor['pincode'] = $txtPincode;
   $visitor['mobile'] = $txtMobile;

   $visitor = $visitor_table->patchEntity($visit,$visitor);
   if ($visitor_table->save($visitor)) {
    $this->Flash->success(__('Details Updated of user ID:'.$id.'.'));
    return $this->redirect(['action' => 'Index']);

 } else {
 $this->Flash->error(__('Somthing wrong. Please, try again!!!!'));

 }
} 


  else {

        $visitor_table = TableRegistry::get('healthvisitors')->find();
        $visitor = $visitor_table->where(['id'=>$id])->first();
        $this->set('healthAdult',$visitor->insured);
        $this->set('txtName',$visitor->name);
        $this->set('idChildren',$visitor->children);
        $this->set('txtMobile',$visitor->mobile);
        $this->set('dropdownAge',$visitor->age);
        $this->set('radioGender',$visitor->gender);
        $this->set('txtPincode',$visitor->pincode);
        $this->set('id',$id);

       }

}   


public function Delete($id)
{
  $visitor_table = TableRegistry::get('healthvisitors');
  $visitor = $visitor_table->get($id);
  $visitor_table->delete($visitor);
  echo "Details deleted successfully.";
  $this->setAction('Index');
}

Это мой файл просмотра index.ctp

<table>
   <tr>
      <td>ID</td>
      <td>Name</td>
      <td>Age</td>
      <td>Mobile</td>
      <td>Gender</td>
      <td>Insured</td>
      <td>InsuredChild</td>
      <td>Pincode</td>
      <td>Action</td>
      <!-- <td>Delete</td> -->
   </tr>

   <?php
      foreach ($results as $row):
         echo "<tr><td>".$row->id."</td>";
         echo "<td>".$row->name."</td>";
         echo "<td>".$row->age."</td>";
         echo "<td>".$row->mobile."</td>";
         echo "<td>".$row->gender."</td>";
         echo "<td>".$row->insured."</td>";
         echo "<td>".$row->children."</td>";
         echo "<td>".$row->pincode."</td>";
         //echo "<td>".$row->status."</td>";
         echo "<td><button id='edit' type='submit' value ='submit'>Edit</button></td>";
         echo "<td><button id='delete' value='submit' type='submit'>Delete</button></td></tr>";
      endforeach;
   ?>
</table>

1 Ответ

0 голосов
/ 31 марта 2020

Прежде всего, вы можете уменьшить строку кода.

Пример:

     $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 
        }
    }
});
});
...