Skip to content

Basic Usage Multiple Tables

Tigran Gabrielyan edited this page Feb 7, 2015 · 1 revision

Basic Usage (multiple tables)

AppController

<?php
App::uses('Controller', 'Controller');
App::uses('DataTableRequestHandlerTrait', 'DataTable.Lib');
/**
 * Application level Controller
 */
class AppController extends Controller {

	use DataTableRequestHandlerTrait;
}

UsersController

<?php
App::uses('AppController', 'Controller');
class UsersController extends AppController {

	public $components = [
		'DataTable.DataTable' => [
			'User' => [
				'columns' => [
					'id',
					'username',
					'email',
					'Actions' => null,
				],
			],
			'BannedUser' => [
				'model' => 'User',
				'columns' => [
					'id',
					'username',
					'email',
					'Actions' => null,
				],
				'conditions' => ['User.banned' => true],
			],
		],
	];

	public $helpers = [
		'DataTable.DataTable',
	];

	public function index() {
		// Only required if using the helper
		$this->DataTable->setViewVar(['User', 'BannedUser']);
	}
}

View file (app/View/Users/index.ctp)

	<h1>Users</h1>
	<?php echo $this->DataTable->render('User') ?>

	<h1>Banned Users</h1>
	<?php echo $this->DataTable->render('BannedUser') ?>

View file (app/View/Users/datatable/user.ctp)

<?php
foreach ($dtResults as $result) {
	$this->dtResponse['aaData'][] = array(
		$result['User']['id'],
		$result['User']['username'],
		$result['User']['email'],
		'View | Delete'
	);
}

View file (app/View/Users/datatable/banned_user.ctp)

<?php
foreach ($dtResults as $result) {
	$this->dtResponse['aaData'][] = array(
		$result['User']['id'],
		$result['User']['username'],
		$result['User']['email'],
		'Unban'
	);
}