2017-04-24 1 views
0

아약스를 사용하여 체크 박스 변경 사항을 저장하고 싶습니다. 그러나 저장된 변경 사항을 가져올 수 없습니다. zf2 프로젝트에서 ajax 스크립트 통합

뷰입니다 :

<?php 
/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 



$title = 'Action \'s acces by role '; 
$this->headTitle($title); 
?> 

<h1><?php echo $this->escapeHtml($title); ?></h1> 
<table class="table"> 
    <tr> 
     <th>Action</th> 
     <?php foreach ($roles as $role) : ?> 
      <th><?php echo $this->escapeHtml($role['name']); ?>  </th> 

     <?php endforeach; ?> 
    </tr> 
    <tr><?php foreach ($actions as $action) : ?> 

      <th> <?php echo $this->escapeHtml($action['name']); 
      '<\br>' ?></th> 
      <?php 
      foreach ($roles as $role) : 
       $exist = 0; 

       foreach ($acls as $acl) : 

        if ($acl['fk_role_id'] == $role['id'] && $acl['fk_action_id'] == $action['id'] && $acl['acces'] == 1) { 
         $exist = 1; 
        } 

       endforeach; 
       ?> 
       <th> <?php if ($exist == 1) { ?> 
         <label class="css-input switch switch-sm switch-primary push-10-t"> 
          <input type='checkbox' class="checkboxAccess" id_role="<?= $role['id'] ?>" id_action="<?= $action['id'] ?>" acces="<?= $exist ?>" checked><span></span> 
         </label> 
        <?php } else { ?> 
         <label class="css-input switch switch-sm switch-primary push-10-t"> 

          <input type="checkbox" class="checkboxAccess" id_role="<?= $role['id'] ?>" id_action="<?= $action['id'] ?>" acces="<?= $exist ?>" > <span></span> 
         </label> 
         </th> 
       <?php } 
      endforeach; 
      ?> 

     </tr> 

<?php endforeach; ?> 

</table> 

actionacces.phtml이는 droit.js입니다 :

/* *이 라이센스 헤더를 변경 프로젝트 속성에서 라이센스 헤더를 선택합니다. *이 템플릿 파일을 변경하려면 Tools | 템플릿 *을 선택하고 편집기에서 템플릿을 엽니 다. */

$(document).ready(function() { 
    $(".checkboxAccess").on('click', function() { 
//  console.log($(this).attr("id_role")); 
//  var role_id = $(this).attr("id_role"); 
//   var action_id = $(this).attr("id_action"); 
//   var droit = $(this).is(':checked'); 
     console.log($(this).attr("id_role")); 
     var role_id = $(this).attr("id_role"); 
      var action_id = $(this).attr("id_action"); 
     var acces = $(this).is(':checked'); 

//  alert(role_id); 
//  alert(action_id); 

     $.ajax({ 
      type: "POST", 
//    url:'Privilege/ACL/addACL', 
      url: 'Detect/Acl/modifrole', 
//   data: { 
//    "id_role": role_id, 
//    "id_action": action_id, 
//    "droit": droit}, 
      data: { 
       "id_role": role_id, 
       "id_action": action_id, 
       "acces": acces 
       }, 

      Success: function (result) { 
       alert('Success'); 
       console.log(result); 
      }, 
      Error: function() { 
       alert('Error'); 
      }}) 
    }); 

}); 

컨트롤러에서이 기능 :

public function modifroleAction() { 

     $request = $this->getRequest(); 
//  echo'<pre>';  print_r($this->getRequest());die; 
     if ($request->isPost()) { 
      $parametres = $this->params()->fromPost(); 
      $acl = new Acl(); 
      $acl->fk_role_id = $parametres['role_id']; 
      $acl->fk_action_id = $parametres['action_id']; 
      $acces = $parametres['acces']; 
      if ($acces == "false") { 
       $acl->acces = 0; 
      } else { 
       $acl->acces = 1; 
      } 
      $this->getAclTable()->saveAcl($acl); 

      return $this->redirect()->toRoute('acl'); 
     } 
    } 

당신이 날 도와 드릴까요? , id_role을 의미

data: { 
      "id_role": role_id, 
      "id_action": action_id, 
      "acces": acces 
      }, 

을 -

+0

ajax.url : 'Detect/Acl/modifrole'을 (를) 확인 했습니까? 또는 컨트롤러 modifroleAction()에서 데이터를 가져 오는 중입니까? –

답변

0

당신은 parametres [ 'ROLE_ID'] $하여 데이터를 얻으려고 노력하고 $ parametres [ '의 action_id는'] 그 ROLE_ID 의미

을 action_id를하지만 전송 및 id_action.

변경 사항 게시 색인이 작동 할 수 있습니다.