Latest news:

New android application Islamic Video has been released. its a free islamic video application for android smartphone. Download now!

How to Call action of other Controller in YII2

When we need to to call another controller function,we can simply use the below code

                    'r' => 'ws'

write it in Controller A index method and you can get the value of $r  in Controller Publish commit method.



Views: 3700

Yii2 Validate Only Create Action


Its called 'scenarios':

in model:

public function rules()
    return [
        ['title', 'required', 'on' => 'create']

in controller:

public function actionCreate()
     $model = new Item();
     $model->scenario = 'create';

You'd better define scenario as a constant though.


source :

Views: 3741

Yii2 - Get Current Action ID in main.php


In a layout you can access the current controller via $this->context, and so the current action id by $this->context->action->id

For reference

Views: 2849

Yii2 pagination

Pagination represents information relevant to pagination of data items.

When data needs to be rendered in multiple pages, Pagination can be used to represent information such as total item count, page size, current page, etc. These information can be passed to pagers to render pagination buttons or links.

The following example shows how to create a pagination object and feed it to a pager.

Controller action:

public function actionSearch($q = '') {
        $this->layout = 'site_main';

        $q = trim($q);

        $sql = "SELECT * FROM
(select p.product_id as 'sid',p.name_en,p.name_ar,p.description_en,description_ar,p.image, 'product' as 'type', 'none' as 'category_type'
from tbl_products p
select sl.service_location_id as 'sid' ,sl.name_en,sl.name_ar,sl.description_en,sl.description_ar,sl.image,'servicelocation' as 'type' ,'none' as 'category_type'
from tbl_service_locations sl
as search
WHERE search.name_en LIKE '$q%' or search.name_ar LIKE '$q%' or search.description_en LIKE '$q%' or search.description_ar LIKE '$q%'  
        $query = Yii::$app->db->createCommand($sql)->queryAll();

        $count = sizeof($query);

        //echo $count;

        $dataProvider = new SqlDataProvider([
            'sql' => $sql,
            'totalCount' => $count,
            'pagination' => [
                'pageSize' => 10,

        //$models = $dataProvider->query;

        return $this->render('search', [
                    'q' => $q,
                    'result' => $dataProvider->getModels(),
                    'dataProvider' => $dataProvider,
                    'count' => $count,

View :

foreach ($result as $row) {

 // display $model here


// display pagination

echo yiiwidgetsLinkPager::widget([
    'pagination' => $dataProvider->pagination,

For reference please visit



Views: 3736

Yii2 leftJoin()


$query = new Query;
$query    ->select(['tbl_user.username AS name', 'tbl_category.type as Category'])  
        ->leftJoin('tbl_category', 'tbl_category.createdby = tbl_user.userid')
$command = $query->createCommand();
$data = $command->queryAll();

Views: 1864

Yii2 innerJoinWith()


$model = User::find()
    ->innerJoinWith('comments', false)
// equivalent to the above
$model = User::find()
    ->joinWith('comments', false, 'INNER JOIN')


$query = new Query;
$query    ->select(['SELECT COLUMNS'])  
        ->join(    'JOIN_TYPE',
$command = $query->createCommand();
$data = $command->queryAll();               

Sample 1:

$query = new Query;
$query    ->select([
        'tbl_user.username AS name',
        'tbl_category.categoryname as  Category',
    ->join('LEFT OUTER JOIN', 'tbl_category',
                'tbl_category.createdby =tbl_user.userid')        
    ->join('LEFT OUTER JOIN', 'tbl_document',
                'tbl_category.cid =tbl_document.did')
    ->LIMIT(5)    ;
$command = $query->createCommand();
$data = $command->queryAll();   

Views: 2087

Yii2 joinWith()


Sample 1:

$model = User::find()

Sample 2:

$model = User::find()

Views: 2022

Yii2 Relation Model

Relation Model

$model = User::find()
    foreach ($model as $user) {
        // get data from relation model
        $comments = $user->comments;
        foreach($comments as $comment){

Views: 1237

Yii2 GridView sorting and pagination using pajax

use yiiwidgetsPjax;

Add above line in the beginning of your view. 

<?php Pjax::begin(); ?>

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yiigridSerialColumn'],


            'class' => 'yiigridActionColumn',
            'template' => '{view}',
]); ?>

<?php Pjax::end(); ?>


Views: 1590

Yii2 Turning on Pretty URLs

First, let's enable Yii2's pretty URLs with mod_rewrite. On the Yii home page, if you click on the About menu option, the URL will be something like http://localhost/hello/web/index.php?r=site%2Fabout. We'd like to change that to http://localhost/hello/web/site/about.

The config subdirectory includes environment configurations for your web and console applications as well as the future database settings. Edit /config/web.php to add urlManagement to the current web application. Add the following urlManager section within the components array:

Then, create an .htaccess file within /web where the primary index.php file exists:

Make sure mod_rewrite is running locally on MAMP; if not, check out this Stack Overflow guide.

In your browser, visit this URL: http://localhost/hello/web/site/about. You should see the Yii application About page and clicking on other menu options should bring up pretty URLs.

Views: 1124

Subscribe Us

Follow Us