hi guys, i apply the grocery crud operation in a modal view, the problem is when i click the edit and view button, only one data record is display at the view and edit modal view. when i click view and edit at the different data record, it always the same. i cant post picture sample so i can specifically state my problem :(
controller/InfoTable.php -> where i put the grocery crud operation to access inside this controller
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Infotable extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->database();
$this->load->helper('url');
$this->load->library('grocery_CRUD');
$this->load->model('grocery_crud_model');
}
public function index() {
$crud = new grocery_CRUD();
$crud->set_subject('Resident');
$crud->set_table('resident');
$crud->set_theme('datatables');
$crud->columns('name', 'mname', 'lname', 'gender', 'bday', 'age', 'citizenship', 'occupation', 'status', 'purok', 'resAddress', 'perAddress', 'email', 'telNum', 'cpNum');
$crud->set_primary_key('resident_id', 'resident');
$crud->unset_export();
$crud->unset_print();
$crud->set_crud_url_path('/InfoTable', '/InfoTable');
$crud->display_as('name', 'First Name')
->display_as('mname', 'Middle Name')
->display_as('lname', 'Last Name')
->display_as('gender', 'Gender')
->display_as('bday', 'Birthdate')
->display_as('age', 'Age')
->display_as('citizenship', 'Citizenship')
->display_as('occupation', 'Occupation')
->display_as('status', 'Status')
->display_as('purok', 'Purok')
->display_as('resAddress', 'Residential Address')
->display_as('perAddress', 'Permanent Address')
->display_as('email', 'Email Address')
->display_as('telNum', 'Tel. #')
->display_as('cpNum', 'Cellphone #');
$output = $crud->render();
$this->_example_output($output);
}
public function add() {
$crud = new grocery_CRUD();
$crud->set_js('assets/Backend/js/vendor/bootstrap.min.js');
$crud->set_js('assets/Backend/js/plugins.js');
$crud->set_js('assets/Backend/js/app.js');
$crud->set_js('assets/Backend/js/vendor/jquery-2.1.1.min.js');
$crud->set_css('assets/Backend/css/animate.min.css');
$crud->set_css('assets/Backend/css/bootstrap.min.css');
$crud->set_css('assets/Backend/css/main.css');
$crud->set_css('assets/Backend/css/plugins.css');
$crud->set_css('assets/Backend/css/themes.css');
$crud->set_subject('Resident');
$crud->set_table('resident');
$crud->set_theme('datatables');
$crud->set_primary_key('resident_id');
$crud->set_crud_url_path('/InfoTable/index', '/InfoTable');
$crud->required_fields('First Name', 'Middle Name', 'Last Name', 'Gender', 'Birthdate', 'Age', 'Citizenship', 'Occupation', 'Status', 'Purok', 'Residential Address', 'Permanent Address', 'Email Address', 'Telephone #', 'Cellphone #');
// $crud->fields('First Name', 'Middle Name', 'Last Name', 'Gender', 'Birthdate', 'Age', 'Citizenship', 'Occupation', 'Status', 'Purok', 'Residential Address', 'Permanent Address', 'Email Address', 'Telephone #', 'Cellphone #');
$crud->callback_add_field('Residential Address', function () {
return '<textarea name="Residential Address" rows="7" cols="50" class="form-control" placeholder="in Full Address Format..."></textarea>';
});
$crud->callback_add_field('Permanent Address', function () {
return '<textarea name="Permanent Address" rows="7" cols="50" class="form-control" placeholder="in Full Address Format..."></textarea>';
});
$crud->callback_add_field('Email Address', function () {
return '<input type="email" name="Email Address" class="form-control" style="width: 300%;"></input>';
});
$crud->callback_add_field('Telephone #', function () {
return '<input type="tel" name="Telephone #" class="form-control" style="width: 300%;"></input>';
});
$crud->callback_add_field('Cellphone #', function () {
return '<input type="tel" name="Cellphone #" class="form-control" style="width: 300%;"></input>';
});
$crud->callback_add_field('Gender', function() {
return '<input type="radio" name="Gender" value="male" /> Male <input type="radio" name="Gender" value="female" /> Female';
});
$crud->callback_add_field('Birthdate', function () {
return '<input type="text" id="example-datepicker4" name="Birthdate" class="form-control input-datepicker" data-date-format="mm-dd-yyyy">';
});
$crud->callback_add_field('Status', function () {
return '<select name="Status" class="form-control select-select2">
<option></option>
<option value="Single">Single</option>
<option value="Married">Married</option>
<option value="Separated">Separated</option>
<option value="Divorced">Divorced</option>
<option value="Widowed">Widowed</option>
</select>';
});
// $crud->change_field_type('Status', 'dropdown', array('1' => 'Single', '2' => 'Married', '3' => 'Separated', '4' => 'Widowed', '5' => 'Divorced'));
// $crud->field_type('Status','dropdown',array('1' => 'Single', '2' => 'Married', '3' => 'Separated', '4' => 'Widowed', '5' => 'Divorced'));
$crud->display_as('name', 'First Name')
->display_as('mname', 'Middle Name')
->display_as('lname', 'Last Name')
->display_as('gender', 'Gender')
->display_as('bday', 'Birthdate')
->display_as('age', 'Age')
->display_as('citizenship', 'Citizenship')
->display_as('occupation', 'Occupation')
->display_as('status', 'Status')
->display_as('purok', 'Purok')
->display_as('resAddress', 'Residential Address')
->display_as('perAddress', 'Permanent Address')
->display_as('email', 'Email Address')
->display_as('telNum', 'Telephone #')
->display_as('cpNum', 'Cellphone #');
$output = $crud->render();
$this->_example_output_crud($output);
}
public function insert() {
$crud = new grocery_CRUD();
$crud->set_js('assets/Backend/js/vendor/bootstrap.min.js');
$crud->set_js('assets/Backend/js/plugins.js');
$crud->set_js('assets/Backend/js/app.js');
$crud->set_js('assets/Backend/js/vendor/jquery-2.1.1.min.js');
$crud->set_css('assets/Backend/css/animate.min.css');
$crud->set_css('assets/Backend/css/bootstrap.min.css');
$crud->set_css('assets/Backend/css/main.css');
$crud->set_css('assets/Backend/css/plugins.css');
$crud->set_css('assets/Backend/css/themes.css');
$crud->set_subject('Resident');
$crud->set_table('resident');
$crud->set_theme('datatables');
$crud->set_crud_url_path('/InfoTable', '/InfoTable');
// $crud->required_fields('First Name', 'Middle Name', 'Last Name', 'Gender', 'Birthdate', 'Age', 'Citizenship', 'Occupation', 'Status', 'Purok', 'Residential Address', 'Permanent Address', 'Email Address', 'Telephone #', 'Cellphone #');
// $crud->add_fields('First Name', 'Middle Name', 'Last Name', 'Gender', 'Birthdate', 'Age', 'Citizenship', 'Occupation', 'Status', 'Purok', 'Residential Address', 'Permanent Address', 'Email Address', 'Telephone #', 'Cellphone #');
// $crud->set_rules('First Name');
// $crud->callback_add_field('Residential Address', function () {
// return '<textarea name="Residential Address" rows="7" cols="50" class="form-control" placeholder="in Full Address Format..."></textarea>';
// });
// $crud->callback_add_field('Permanent Address', function () {
// return '<textarea name="Permanent Address" rows="7" cols="50" class="form-control" placeholder="in Full Address Format..."></textarea>';
// });
// $crud->callback_add_field('Email Address', function () {
// return '<input type="email" name="Email Address" class="form-control" style="width: 300%;"></input>';
// });
// $crud->callback_add_field('Telephone #', function () {
// return '<input type="tel" name="Telephone #" class="form-control" style="width: 300%;"></input>';
// });
// $crud->callback_add_field('Cellphone #', function () {
// return '<input type="tel" name="Cellphone #" class="form-control" style="width: 300%;"></input>';
// });
// $crud->callback_add_field('Gender', function() {
// return '<input type="radio" name="Gender" value="male" /> Male <input type="radio" name="Gender" value="female" /> Female';
// });
// $crud->callback_add_field('Birthdate', function () {
// return '<input type="text" name="Birthdate" class="form-control input-datepicker" data-date-format="mm-dd-yyyy">';
// });
// $crud->change_field_type('Status', 'dropdown', array('1' => 'Single', '2' => 'Married', '3' => 'Separated', '4' => 'Widowed', '5' => 'Divorced'));
//
// $crud->display_as('name', 'First Name')
// ->display_as('mname', 'Middle Name')
// ->display_as('lname', 'Last Name')
// ->display_as('gender', 'Gender')
// ->display_as('bday', 'Birthdate')
// ->display_as('age', 'Age')
// ->display_as('citizenship', 'Citizenship')
// ->display_as('occupation', 'Occupation')
// ->display_as('status', 'Status')
// ->display_as('purok', 'Purok')
// ->display_as('resAddress', 'Residential Address')
// ->display_as('perAddress', 'Permanent Address')
// ->display_as('email', 'Email Address')
// ->display_as('telNum', 'Telephone #')
// ->display_as('cpNum', 'Cellphone #');
//
$output = $crud->render();
$this->_example_output_crud($output);
}
public function edit() {
$crud = new grocery_CRUD();
$crud->set_js('assets/Backend/js/vendor/bootstrap.min.js');
$crud->set_js('assets/Backend/js/plugins.js');
$crud->set_js('assets/Backend/js/app.js');
$crud->set_js('assets/Backend/js/vendor/jquery-2.1.1.min.js');
$crud->set_css('assets/Backend/css/animate.min.css');
$crud->set_css('assets/Backend/css/bootstrap.min.css');
$crud->set_css('assets/Backend/css/main.css');
$crud->set_css('assets/Backend/css/plugins.css');
$crud->set_css('assets/Backend/css/themes.css');
$crud->set_subject('Resident');
$crud->set_table('resident');
$crud->set_theme('datatables');
// $crud->set_primary_key('resident_id');
$crud->set_crud_url_path('/InfoTable/index', '/InfoTable');
$crud->required_fields('First Name', 'Middle Name', 'Last Name', 'Gender', 'Birthdate', 'Age', 'Citizenship', 'Occupation', 'Status', 'Purok', 'Residential Address', 'Permanent Address', 'Email Address', 'Telephone #', 'Cellphone #');
// $crud->edit_fields('First Name', 'Middle Name', 'Last Name', 'Gender', 'Birthdate', 'Age', 'Citizenship', 'Occupation', 'Status', 'Purok', 'Residential Address', 'Permanent Address', 'Email Address', 'Telephone #', 'Cellphone #');
// $crud->callback_edit_field('Residential Address', function () {
// return '<textarea name="Residential Address" rows="7" cols="50" class="form-control" placeholder="in Full Address Format..."></textarea>';
// });
// $crud->callback_edit_field('Permanent Address', function () {
// return '<textarea name="Permanent Address" rows="7" cols="50" class="form-control" placeholder="in Full Address Format..."></textarea>';
// });
// $crud->callback_edit_field('Email Address', function () {
// return '<input type="email" name="Email Address" class="form-control"></input>';
// });
// $crud->callback_edit_field('Telephone #', function () {
// return '<input type="tel" name="Telephone #" class="form-control"></input>';
// });
// $crud->callback_edit_field('Cellphone #', function () {
// return '<input type="tel" name="Cellphone #" class="form-control"></input>';
// });
// $crud->callback_edit_field('Gender', function() {
// return '<input type="radio" name="Gender" value="male" /> Male <input type="radio" name="Gender" value="female" /> Female';
// });
// $crud->callback_edit_field('Birthdate', function () {
// return '<input type="text" name="Birthdate" class="form-control input-datepicker" data-date-format="yyyy-mm-dd">';
// });
// $crud->change_field_type('Status', 'dropdown', array('1' => 'Single', '2' => 'Married', '3' => 'Separated', '4' => 'Widowed', '5' => 'Divorced'));
//
$crud->display_as('name', 'First Name')
->display_as('mname', 'Middle Name')
->display_as('lname', 'Last Name')
->display_as('gender', 'Gender')
->display_as('bday', 'Birthdate')
->display_as('age', 'Age')
->display_as('citizenship', 'Citizenship')
->display_as('occupation', 'Occupation')
->display_as('status', 'Status')
->display_as('purok', 'Purok')
->display_as('resAddress', 'Residential Address')
->display_as('perAddress', 'Permanent Address')
->display_as('email', 'Email Address')
->display_as('telNum', 'Telephone #')
->display_as('cpNum', 'Cellphone #');
$output = $crud->render();
$this->_example_output_crud($output);
}
public function read() {
$crud = new grocery_CRUD();
$crud->set_js('assets/Backend/js/vendor/bootstrap.min.js');
$crud->set_js('assets/Backend/js/plugins.js');
$crud->set_js('assets/Backend/js/app.js');
$crud->set_js('assets/Backend/js/vendor/jquery-2.1.1.min.js');
$crud->set_css('assets/Backend/css/animate.min.css');
$crud->set_css('assets/Backend/css/bootstrap.min.css');
$crud->set_css('assets/Backend/css/main.css');
$crud->set_css('assets/Backend/css/plugins.css');
$crud->set_css('assets/Backend/css/themes.css');
$crud->set_subject('Resident');
$crud->set_table('resident');
$crud->set_theme('datatables');
$crud->set_crud_url_path('/InfoTable', '/InfoTable');
$crud->display_as('name', 'First Name')
->display_as('mname', 'Middle Name')
->display_as('lname', 'Last Name')
->display_as('gender', 'Gender')
->display_as('bday', 'Birthdate')
->display_as('age', 'Age')
->display_as('citizenship', 'Citizenship')
->display_as('occupation', 'Occupation')
->display_as('status', 'Status')
->display_as('purok', 'Purok')
->display_as('resAddress', 'Residential Address')
->display_as('perAddress', 'Permanent Address')
->display_as('email', 'Email Address')
->display_as('telNum', 'Telephone #')
->display_as('cpNum', 'Cellphone #');
$output = $crud->render();
$this->_example_output_crud($output);
}
public function delete() {
$crud = new grocery_CRUD();
$crud->set_js('assets/Backend/js/vendor/bootstrap.min.js');
$crud->set_js('assets/Backend/js/plugins.js');
$crud->set_js('assets/Backend/js/app.js');
$crud->set_js('assets/Backend/js/vendor/jquery-2.1.1.min.js');
$crud->set_css('assets/Backend/css/animate.min.css');
$crud->set_css('assets/Backend/css/bootstrap.min.css');
$crud->set_css('assets/Backend/css/main.css');
$crud->set_css('assets/Backend/css/plugins.css');
$crud->set_css('assets/Backend/css/themes.css');
$crud->set_subject('Resident');
$crud->set_table('resident');
$crud->set_theme('datatables');
$output = $crud->render();
$this->_example_output($output);
}
function _example_output($output = null) {
$this->load->view('Backend/page_ui_tables', $output);
}
function _example_output_crud($output = null) {
$this->load->view('Backend/page_ui_crudOp', $output);
}
}
grocery_crud/themes/datatables/view/list.php -> where i modify crud buttons to display crud ops inside the modal
<table class="display groceryCrudTable table table-striped table-bordered table-vcenter table-condensed table-responsive table-hover table-featured" id="<?php echo uniqid(); ?>" style="height: 50px">
<thead>
<tr>
<center>
<?php foreach ($columns as $column) { ?>
<th><?php echo $column->display_as; ?></th>
<?php } ?>
<?php if (!$unset_delete || !$unset_edit || !$unset_read || !empty($actions)) { ?>
<th class="text-center actions" title="Actions" data-sortable="false"><i class="fa fa-flash"></i></th>
<?php } ?>
</center>
</tr>
</thead>
<tbody>
<?php foreach ($list as $num_row => $row) { ?>
<tr id='row-<?php echo $num_row ?>'>
<?php foreach ($columns as $column) { ?>
<td><?php echo $row->{$column->field_name} ?></td>
<?php } ?>
<?php if (!$unset_delete || !$unset_edit || !$unset_read || !empty($actions)) { ?>
<td class="text-center">
<?php
if (!empty($row->action_urls)) {
foreach ($row->action_urls as $action_unique_id => $action_url) {
$action = $actions[$action_unique_id];
?>
<a href="<?php echo $action_url; ?>" class="edit_button btn btn-small btn-effect-ripple btn-ripple btn-default row col-sm-4 col-xs-4" role="button">
<span class="ui-button-icon-primary ui-icon <?php echo $action->css_class; ?> <?php echo $action_unique_id; ?>"></span><span class="ui-button-text"> <?php echo $action->label ?></span>
</a>
<?php
}
}
?>
<?php if (!$unset_read) { ?>
<!-- <a href="<?php // echo $row->read_url ?>" class="edit_button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button">
<span class="ui-button-icon-primary ui-icon ui-icon-document"></span>
<span class="ui-button-text"> <?php // echo $this->l('list_view'); ?></span>
</a>-->
<a href="#modal-fadeView" class="edit_button btn btn-effect-ripple btn-xs btn-primary viewBtn" data-toggle="modal" title="<?php echo $this->l('list_view'); ?>" role="button" style="overflow: hidden; position: relative;">
<i class="fa fa-info-circle"></i>
</a>
<?php } ?>
<?php if (!$unset_edit) { ?>
<!-- <a href="<?php // echo $row->edit_url ?>" class="edit_button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button">
<span class="ui-button-icon-primary ui-icon ui-icon-pencil"></span>
<span class="ui-button-text"> <?php // echo $this->l('list_edit'); ?></span>
</a>-->
<a href="#modal-fadeEdit" class="edit_button btn btn-effect-ripple btn-xs btn-success editBtn" data-toggle="modal" title="<?php echo $this->l('list_edit'); ?>" role="button" style="overflow: hidden; position: relative;">
<i class="fa fa-pencil"></i>
</a>
<?php } ?>
<?php if (!$unset_delete) { ?>
<!-- <a onclick = "javascript: return delete_row('<?php // echo $row->delete_url ?>', '<?php // echo $num_row ?>')"
href="javascript:void(0)" class="delete_button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button">
<span class="ui-button-icon-primary ui-icon ui-icon-circle-minus"></span>
<span class="ui-button-text"> <?php // echo $this->l('list_delete'); ?></span>
</a>-->
<a onclick = "javascript: return delete_row('<?php echo $row->delete_url ?>', '<?php echo $num_row ?>')"
href="javascript:void(0)" class="delete_button btn btn-effect-ripple btn-xs btn-danger" title="<?php echo $this->l('list_delete'); ?>" role="button">
<i class="fa fa-times"></i>
</a>
<?php } ?>
</td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
<!-- <tfoot>
<tr>
<?php foreach ($columns as $column) { ?>
<th><input type="text" name="<?php echo $column->field_name; ?>" placeholder="<?php echo $this->l('list_search') . ' ' . $column->display_as; ?>" class="search_<?php echo $column->field_name; ?>" /></th>
<?php } ?>
<?php if (!$unset_delete || !$unset_edit || !$unset_read || !empty($actions)) { ?>
<th>
<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only floatR refresh-data" role="button" data-url="<?php echo $ajax_list_url; ?>">
<span class="ui-button-icon-primary ui-icon ui-icon-refresh"></span><span class="ui-button-text"> </span>
</button>
<a href="javascript:void(0)" role="button" class="clear-filtering ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary floatR">
<span class="ui-button-icon-primary ui-icon ui-icon-arrowrefresh-1-e"></span>
<span class="ui-button-text"><?php echo $this->l('list_clear_filtering'); ?></span>
</a>
</th>
<?php } ?>
</tr>
</tfoot>-->
</table>
<!--<script type="text/javascript" src="<?php // echo base_url() ?>assets/Backend/grocery_crud/js/jquery_plugins/jquery.fancybox.pack-2.1.5.js"></script>-->
<script type="text/javascript">
+++ var editUrl = <?php echo json_encode($row->edit_url); ?>,
readUrl = <?php echo json_encode($row->read_url); ?>;
var $ = jQuery.noConflict();
$(document).ready(function () {
$(".fancybox").fancybox();
});
</script>
+++ - the script up there in the first line used to import url of edit and view records in the javascript for button actions by using json_encode();
view/page_ui_crudOp.php -> where the crud operation are display via modal inside <iframe>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<?php foreach ($css_files as $file): ?>
<link type="text/css" rel="stylesheet" href="<?php echo $file; ?>" />
<?php endforeach; ?>
<?php foreach ($js_files as $file): ?>
<script src="<?php echo $file; ?>"></script>
<?php endforeach; ?>
</head>
<body>
<div class="block full" style="margin:0 0 0px;">
<div class="block-content-full">
<?php echo $output; ?>
</div>
</div>
</body>
</html>
assets/Backend/js/pages/uiTables.js -> a AppUI 2.1 js file, where i put the crud button actions when clicked and access through the modal view
/*
* Document : uiTables.js
* Author : pixelcave
* Description: Custom javascript code used in Tables page
*/
var UiTables = function () {
return {
init: function () {
/* Initialize Bootstrap Datatables Integration */
App.datatables();
/* Initialize Datatables */
$('#example-datatable').dataTable({
columnDefs: [{orderable: false, targets: [4]}],
pageLength: 10,
lengthMenu: [[5, 10, 20], [5, 10, 20]]
});
/* Add placeholder attribute to the search input */
$('.dataTables_filter input').attr('placeholder', 'Search');
/* Select/Deselect all checkboxes in tables */
$('thead input:checkbox').click(function () {
var checkedStatus = $(this).prop('checked');
var table = $(this).closest('table');
$('tbody input:checkbox', table).each(function () {
$(this).prop('checked', checkedStatus);
});
});
/* Table Styles Switcher */
var genTable = $('#general-table');
var styleBorders = $('#style-borders');
$('#style-default').on('click', function () {
styleBorders.find('.btn').removeClass('active');
$(this).addClass('active');
genTable.removeClass('table-bordered').removeClass('table-borderless');
});
$('#style-bordered').on('click', function () {
styleBorders.find('.btn').removeClass('active');
$(this).addClass('active');
genTable.removeClass('table-borderless').addClass('table-bordered');
});
$('#style-borderless').on('click', function () {
styleBorders.find('.btn').removeClass('active');
$(this).addClass('active');
genTable.removeClass('table-bordered').addClass('table-borderless');
});
$('#style-striped').on('click', function () {
$(this).toggleClass('active');
if ($(this).hasClass('active')) {
genTable.addClass('table-striped');
} else {
genTable.removeClass('table-striped');
}
});
$('#style-condensed').on('click', function () {
$(this).toggleClass('active');
if ($(this).hasClass('active')) {
genTable.addClass('table-condensed');
} else {
genTable.removeClass('table-condensed');
}
});
$('#style-hover').on('click', function () {
$(this).toggleClass('active');
if ($(this).hasClass('active')) {
genTable.addClass('table-hover');
} else {
genTable.removeClass('table-hover');
}
});
// add button button action
$(".addBtn").click(function () {
$('#addFrame').attr('src', "/InfoTable/add");
});
// edit button button action
$(".editBtn").click(function (e) {
$('#editFrame').attr('src', editUrl);
e.preventDefault();
});
// view button button action
$(".viewBtn").click(function (e) {
$('#viewFrame').attr('src', readUrl);
e.preventDefault();
});
$('#viewFrame').load(function () {
$('#viewFrame').height($('#viewFrame').contents().height());
});
$('#editFrame').load(function () {
$('#editFrame').height($('#editFrame').contents().height());
});
$('#addFrame').load(function () {
$('#addFrame').height($('#addFrame').contents().height());
});
}
};
}();
sorry for the long post, hope this sources is enough to get my point and any idea with this is heavenly appreciated. thanks in advance :)
