Question

I am working with Concrete-5 CMS, I have an issue in passing value form view to controller.In my application I am using following code for displaying employee role.

foreach($rd as $data){
    echo "<tr><td>".$data[role_name]."</td><td>".$data[role_description]."</td><td><a href=".$this->action('edit', $data['role_id']).">Edit</a></td><td>".$ih->button_js(t('Delete'), "deleteRole('".$data['role_id']."')", 'left', 'error')."</td></tr>";
}
<input type="hidden" name="rno" id="rno" />

script:

$delConfirmJS = t('Are you sure you want to remove this Role?'); ?>

<script type="text/javascript">
    function deleteRole(myvar) {
    var role = document.getElementById('rno');
    role.value = myvar;
    if (confirm('<?php echo $delConfirmJS ?>')) {
        $('#rolelist').submit();
        //location.href = "<?php echo $this->url('/role/add_role/', 'delete', 'myvar')?>";
    }
}
</script>

html code I did edit operation by passing role_id through edit action. But, In case of delete i should ask for a conformation, so I use java script to conform it and call the href location and all.

But i don't know how to pass the role_id to script and pass to my controller. how to achieve this task?

thanks Kumar

Was it helpful?

Solution

You can pass value to server using ajax calls. See the following code. Here We use a confirm box to get user confirmation.

function deleteEmployee(empId){
   var confirm=confirm("Do you want to delete?");
   if (confirm)
   {
     var url = "path/to/delete.php";
     var data = "emp_id="+empId;
     $.ajax({
       type: "POST",
       url: "otherfile.php",
       data: data ,
       success: function(){         
          alert("Employee deleted successfully.");
       }
     });
  }
}

In delete.php you can take the employee id by using $_POST['emp_id']

OTHER TIPS

You can do it easily by using jquery

var dataString = 'any_variable='+ <?=$phpvariable?>;        
$.ajax({
type: "POST",
url: "otherfile.php",
data: dataString,
success: function(msg){         
    // msg is return value of your otherfile.php
}
}); //END $.ajax

I would add an extra variable in to the delete link address. Preferrably the ID of the row that you need to be deleted.

I don't know Concrete-5 CMS. But, i am giving you the general idea
I think, you are using some button on which users can click if they want to delete role.

<td>".$ih->button_js(t('Delete'), "deleteRole('".$data['role_id']."')", 'left', 'error')."</td>

My suggestion,
add onClick to button
onClick="deleteEmployee(roleId);" // roleId - dynamic id of the role by looping over

Frankly speaking dude, i dont know how you will add this to your button that i guess there would surely be some way to simply add this to existing html.

And now, simply use Sajith's function

// Sajith's function here
function deleteEmployee(empId){

    var confirm=confirm("Do you want to delete?");
    if (confirm){
        var url = "path/to/delete.php";
        var data = "emp_id="+empId;
        $.ajax({
            type: "POST",
            url: "otherfile.php",
            data: data ,
            success: function(){         
                alert("Employee deleted successfully.");
            }
        });
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top