Wednesday 28 September 2016

Allow Access to Specific User role in controller in Yii Framework

Set On Coltroller   


 public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],     'access' => [
                        'class' => \yii\filters\AccessControl::className(),
                        'only' => ['index','create','update','view'],
                        'rules' => [
                            // allow authenticated users
                            [
                                'allow' => true,
                                'roles' => ['@'],
                                'matchCallback' => function ($rule, $action) {
                            if (Yii::$app->user->identity->role==1) {
                                return true;
                            }
                            return false;
                                }
                            ],
                            // everything else is denied
                        ],
                    ],
        ];
    }

Tuesday 27 September 2016

Server Side datatable in Yii Framework

Step 1  view set helper

use yii\helpers\Html;
use yii\helpers\Url;

Step 2 Table design in view 

   <table id="dtofficer" class="table table-striped table-bordered" width="100%" cellspacing="0">
   
        <thead>
            <tr>
                <th>Sr. No.</th>
                <th> Employee Name</th>
                <th> Employee Salary</th>
                <th> Employee Age</th>
           
                <th>Action</th>
            </tr>
        </thead>
 
        <tfoot>
           
    </table>

Step 3 Call Script in view

<?php

$this->registerCssFile(Yii::$app->urlManager->baseUrl . '/css/dk/dataTables.bootstrap.css');
$this->registerJsFile(Yii::$app->urlManager->baseUrl . '/css/dk/jquery.dataTables.min.js', ['depends' => [\yii\web\JqueryAsset::className()]]);
$this->registerJsFile(Yii::$app->urlManager->baseUrl . '/css/dk/dataTables.bootstrap.min.js', ['depends' => [\yii\web\JqueryAsset::className()]]);
$this->registerJsFile(Yii::$app->urlManager->baseUrl . '/css/dk/datatables.responsive.js', ['depends' => [\yii\web\JqueryAsset::className()]]);
$this->registerJsFile(Yii::$app->urlManager->baseUrl . '/css/dk/fnReloadAjax.js', ['depends' => [\yii\web\JqueryAsset::className()]]);
$urlOne = Url::to(['site/officerdata']);
$script = <<< JS
    $(document).ready(function() {
       
        var dataTable = $('#dtofficer').DataTable({
        "processing": true,
        "serverSide": true,
       
        "ajax": {
            url: "$urlOne",
            type: "post",
            error: function()
            {
               alert('error');
            }
         
        }
    });
       
        $('#dtofficer tbody').on( 'click', '.selrow', function () {
            $("#fmfirereport-fire_detail_id").val($(this).text());
            });
    });
JS;
$this->registerJs($script);
?>

Step -4 Controller

public function actionOfficerdata() {
        
        $requestData = $_REQUEST;
        
        $columns = array(
            0 => 'id',
            1 => 'employee_name',
            2 => 'employee_salary',
            3 => 'employee_age'
             );
        
       $sql = "SELECT  * from employee where 1=1";
       
        $data = Yii::$app->db->createCommand($sql)->queryAll();
        
        $totalData = count($data);
        $totalFiltered = $totalData;
     
        // $sql.="WHERE 1=1";
        
        if (!empty($requestData['search']['value']))
        {
            $sql.=" AND ( employee_name LIKE '" . $requestData['search']['value'] . "%' ";
            $sql.=" OR employee_salary LIKE '" . $requestData['search']['value'] . "%'";
            $sql.=" OR employee_age LIKE '" . $requestData['search']['value'] . "%')";
          
        }
        $data = Yii::$app->db->createCommand($sql)->queryAll();
        $totalFiltered = count($data);
       
        $sql.=" ORDER BY " . $columns[$requestData['order'][0]['column']] . "   " . $requestData['order'][0]['dir'] . "  LIMIT " . $requestData['start'] . " ," . 
        $requestData['length'] . "   ";
       
        $result = Yii::$app->db->createCommand($sql)->queryAll();
       
        $data = array();
        $i=1;
        
        foreach ($result as $key => $row)
        {
          
            $nestedData = array();
            $url = Url::to(['employee/update', 'id' => $row['id']]);
            $nestedData[] = $i;
            $nestedData[] = $row["employee_name"];
            $nestedData[] = $row["employee_salary"];
            $nestedData[] = $row["employee_age"];
            $nestedData[] = '<a href="'.$url.'"><span class="glyphicon glyphicon-pencil"></span></a>';
             $data[] = $nestedData;
             $i++;
        }
        
        $json_data = array(
            "draw" => intval($requestData['draw']), 
            "recordsTotal" => intval($totalData),
            "recordsFiltered" => intval($totalFiltered),
            "data" => $data   // total data array
        );

        echo json_encode($json_data);
    }

Monday 19 September 2016

Yii2 Create Dropdown select options with custom Query

         $gisv = Yii::$app->db->createCommand("SELECT u.id as id, CONCAT_WS(' ',dep.dep_name,des.des_name, name) as name FROM `user` as u inner join mst_department dep on dep.d_id=u.department_id inner join mst_designation des on des.ds_id=u.designation_id  where u.role=3");
                                   
  $geb = $gisv->queryAll();
                                 
    $keuzeData = ArrayHelper::map($geb, 'id', 'name');
                       
              echo $form->field($model, 'employee_id')->dropDownList($keuzeData, ['prompt' => '--Select Employee--'])->label(false);
                                       

Setup VueJS in Laravel

Setup VueJS in Laravel 1. You will need to install javascript dependencies by running the following command on your terminal.      npm i...