Category Archives: All About Yii2

Setting single domain Yii2 advanced di webserver Apache

Cara setting single domain di yii2 sebenarnya beragam. Ada juga settingan rekomendasi dari dokumentasinya yiiframework langsung di : http://www.yiiframework.com/wiki/799/yii2-app-advanced-on-single-domain-apache-nginx/ .

Tapi cara disana tidak cocok setelah saya coba di lokal saya yg di folder htdocs saya terdapat banyak folder project, file di yii2 advanced harus diletakkan di root folder htdocs atau bisa menggunakan virtualhost terlebih dahulu. Sedangkan saya ingin yii2 advanced bisa diakses “locahost/yii2advanced” <- (Untuk /frontend), dan “localhost/yii2advanced/backend” <- (Untuk /backend).

Cara ini saya coba di webserver Apache, sedangkan untuk ngix saya belum explore. Saya tidak yakin cara berikut simple dan benar atau tidak, tapi setidaknya cara ini yang saya tau,hhe :v

  • Pertama Install Yii2 advanced di lokal anda dan buat folder baru di “htdocs/yii2advanced/{isi aplikasi}” atau www/yii2advanced/{isi aplikasi}
  • Setelah melakukan settingan dasar instalasi yii2 advanced, pastikan aplikasi anda bisa di jalankan di “localhost/yii2advanced/frontend/web/index” dan “localhost/yii2advanced/backed/web/index”
  • Buat file “.htaccess” dengan isi berikut ini dan letakkan di folder htdocs/yii2advanced/{.htaccess} , lokasinya sama dengan lokasi file composer.json
    # ----------------------------------------------------------------------
    # Adds some security for the Apache server configuration for use with
    # yii2-app-practical template.
    # @author Kartik Visweswaran <kartikv2@gmail.com>
    # @see http://demos.krajee.com/app-practical
    # ----------------------------------------------------------------------
    
    # "-Indexes" will have Apache block users from browsing folders without a default document
    # Usually you should leave this activated, because you shouldn't allow everybody to surf through
    # every folder on your server (which includes rather private places like CMS system folders).
    <IfModule mod_autoindex.c>
      Options -Indexes
    </IfModule>
    
    
    # Block access to "hidden" directories whose names begin with a period. This
    # includes directories used by version control systems such as Subversion or Git.
    <IfModule mod_rewrite.c>
      RewriteCond %{SCRIPT_FILENAME} -d
      RewriteCond %{SCRIPT_FILENAME} -f
      RewriteRule "(^|/)\." - [F]
    </IfModule>
    
    
    # Block access to backup and source files
    # This files may be left by some text/html editors and
    # pose a great security danger, when someone can access them
    <FilesMatch "(\.(bak|bat|config|sql|fla|md|psd|ini|log|sh|inc|swp|dist)|~|init|composer\.json|composer\.lock)$">
      Order allow,deny
      Deny from all
      Satisfy All
    </FilesMatch>
    
    # Increase cookie security
    <IfModule php5_module>
      php_value session.cookie_httponly true
    </IfModule>
    
    # Settings to hide index.php and ensure pretty urls
    RewriteEngine on
    
    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # otherwise forward it to index.php
    RewriteRule . index.php
  • Buat file “index.php” di tempat yang sama. “htdocs/yii2advanced/{index.php}”
    <?php
    defined('YII_DEBUG') or define('YII_DEBUG', true);
    defined('YII_ENV') or define('YII_ENV', 'dev');
    
    require(__DIR__ . '/vendor/autoload.php');
    require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
    require(__DIR__ . '/common/config/bootstrap.php');
    require(__DIR__ . '/frontend/config/bootstrap.php');
    
    $config = yii\helpers\ArrayHelper::merge(
     require(__DIR__ . '/common/config/main.php'),
     require(__DIR__ . '/common/config/main-local.php'),
     require(__DIR__ . '/frontend/config/main.php'),
     require(__DIR__ . '/frontend/config/main-local.php')
    );
    
    $application = new yii\web\Application($config);
    $application->run();
  • Edit file “htdocs/yii2advanced/backend/config/main.php”. Tambahkan baris yang saya tandai merah
    <?php
    
    use \yii\web\Request;
    $baseUrl = str_replace('/backend/web', '', (new Request)->getBaseUrl());
    
    $params = array_merge(
     require(__DIR__ . '/../../common/config/params.php'),
     require(__DIR__ . '/../../common/config/params-local.php'),
     require(__DIR__ . '/params.php'),
     require(__DIR__ . '/params-local.php')
    );
    
    return [
     'id' => 'app-backend',
     'basePath' => dirname(__DIR__),
     'controllerNamespace' => 'backend\controllers',
     'bootstrap' => ['log'],
     'modules' => [],
     'components' => [
     'request' => [
     'csrfParam' => '_csrf-backend',
     'baseUrl' => $baseUrl,
     ],
     'user' => [
     'identityClass' => 'common\models\User',
     'enableAutoLogin' => true,
     'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true],
     ],
     'session' => [
     // this is the name of the session cookie used for login on the backend
     'name' => 'advanced-backend',
     ],
     'log' => [
     'traceLevel' => YII_DEBUG ? 3 : 0,
     'targets' => [
     [
     'class' => 'yii\log\FileTarget',
     'levels' => ['error', 'warning'],
     ],
     ],
     ],
     'errorHandler' => [
     'errorAction' => 'site/error',
     ],
     
     'urlManager' => [
     'enablePrettyUrl' => true,
     'showScriptName' => false,
     'rules' => [
     ],
     ],
     
     ],
     'params' => $params,
    ];
  • Tambahkan file “index.php” di folder “htdocs/yii2advanced/backend/{index.php}”
    <?php
    defined('YII_DEBUG') or define('YII_DEBUG', true);
    defined('YII_ENV') or define('YII_ENV', 'dev');
    
    require(__DIR__ . '/../vendor/autoload.php');
    require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
    require(__DIR__ . '/../common/config/bootstrap.php');
    require(__DIR__ . '/config/bootstrap.php');
    
    $config = yii\helpers\ArrayHelper::merge(
     require(__DIR__ . '/../common/config/main.php'),
     require(__DIR__ . '/../common/config/main-local.php'),
     require(__DIR__ . '/config/main.php'),
     require(__DIR__ . '/config/main-local.php')
    );
    
    $application = new yii\web\Application($config);
    $application->run();
  • Tambahkan juga file “.htaccess” di folder “htdocs/yii2advanced/backend/{.htaccess}”
    # ----------------------------------------------------------------------
    # Adds some security for the Apache server configuration for use with
    # yii2-app-practical template.
    # @author Kartik Visweswaran <kartikv2@gmail.com>
    # @see http://demos.krajee.com/app-practical
    # ----------------------------------------------------------------------
    
    # "-Indexes" will have Apache block users from browsing folders without a default document
    # Usually you should leave this activated, because you shouldn't allow everybody to surf through
    # every folder on your server (which includes rather private places like CMS system folders).
    <IfModule mod_autoindex.c>
     Options -Indexes
    </IfModule>
    
    
    # Block access to "hidden" directories whose names begin with a period. This
    # includes directories used by version control systems such as Subversion or Git.
    <IfModule mod_rewrite.c>
     RewriteCond %{SCRIPT_FILENAME} -d
     RewriteCond %{SCRIPT_FILENAME} -f
     RewriteRule "(^|/)\." - [F]
    </IfModule>
    
    
    # Block access to backup and source files
    # This files may be left by some text/html editors and
    # pose a great security danger, when someone can access them
    <FilesMatch "(\.(bak|bat|config|sql|fla|md|psd|ini|log|sh|inc|swp|dist)|~|init|composer\.json|composer\.lock)$">
     Order allow,deny
     Deny from all
     Satisfy All
    </FilesMatch>
    
    # Increase cookie security
    <IfModule php5_module>
     php_value session.cookie_httponly true
    </IfModule>
    
    # Settings to hide index.php and ensure pretty urls
    RewriteEngine on
    
    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # otherwise forward it to index.php
    RewriteRule . index.php
  • Edit file “htdocs/yii2advanced/backend/assets/AppAsset.php”, ganti pada baris yang saya tandai merah
    <?php
    
    namespace backend\assets;
    
    use yii\web\AssetBundle;
    
    /**
     * Main backend application asset bundle.
     */
    class AppAsset extends AssetBundle
    {
        public $basePath = '@webroot';
        public $baseUrl = '@web/web';
        public $css = [
            'css/site.css',
        ];
        public $js = [
        ];
        public $depends = [
            'yii\web\YiiAsset',
            'yii\bootstrap\BootstrapAsset',
        ];
    }

 

  • Edit file “htdocs/yii2advanced/frontend/config/main.php”. Tambahkan baris yang saya tandai merah
    <?php
    
    use \yii\web\Request;
    $baseUrl = str_replace('/frontend/web', '', (new Request)->getBaseUrl());
    
    $params = array_merge(
     require(__DIR__ . '/../../common/config/params.php'),
     require(__DIR__ . '/../../common/config/params-local.php'),
     require(__DIR__ . '/params.php'),
     require(__DIR__ . '/params-local.php')
    );
    
    return [
     'id' => 'app-frontend',
     'basePath' => dirname(__DIR__),
     'bootstrap' => ['log'],
     'controllerNamespace' => 'frontend\controllers',
     'components' => [
     'request' => [
     'csrfParam' => '_csrf-frontend',
     'baseUrl' => $baseUrl,
     ],
     'user' => [
     'identityClass' => 'common\models\User',
     'enableAutoLogin' => true,
     'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
     ],
     'session' => [
     // this is the name of the session cookie used for login on the frontend
     'name' => 'advanced-frontend',
     ],
     'log' => [
     'traceLevel' => YII_DEBUG ? 3 : 0,
     'targets' => [
     [
     'class' => 'yii\log\FileTarget',
     'levels' => ['error', 'warning'],
     ],
     ],
     ],
     'errorHandler' => [
     'errorAction' => 'site/error',
     ],
     
     'urlManager' => [
     'enablePrettyUrl' => true,
     'showScriptName' => false,
     'rules' => [
     'transaction/getrequestdetail/<id>/' => 'transaction/getrequestdetail',
     ],
     ],
     
     ],
     'params' => $params,
    ];
  • Edit file “htdocs/yii2advanced/frontend/assets/AppAsset.php”, ganti pada baris yang saya tandai merah
    <?php
    
    namespace frontend\assets;
    
    use yii\web\AssetBundle;
    
    /**
     * Main frontend application asset bundle.
     */
    class AppAsset extends AssetBundle
    {
        public $basePath = '@webroot';
        public $baseUrl = '@web/frontend/web/';
        public $css = [
            'css/site.css',
        ];
        public $js = [
        ];
        public $depends = [
            'yii\web\YiiAsset',
            'yii\bootstrap\BootstrapAsset',
        ];
    }
  • Terakhir buat folder “assets” di “htdocs/yii2advanced/assets
  • Selesai. Mudah-mudahan gk ada yang kelupaan

Saved Tutorial Link

Ini catatan pribadi untuk menyimpan link dari website blog atau video orang lain yang menurut saya penting dan akan saya buka untuk referensi belajar.

All About Yii2 + MongoDB

Link Youtube:

  1. Yii2 MongoDB – Video 1: Setup Yii2 with MongoDB and Create user function : https://www.youtube.com/watch?v=1msu95ZkRe8
  2. Yii2 MongoDB – Video 2: Generate Mongo Model, Controller, CRUD with Gii Tool : https://www.youtube.com/watch?v=1urmws7hz5Q
  3. MongoDB Tutorial for Beginners – 14 – Backup and Restore : https://www.youtube.com/watch?v=CHNB38MAvKY
  4. Yii2 MongoDB – Video 3: Generate i18n for multi language : https://www.youtube.com/watch?v=pPuz_mrWLME

Link Blog:

  1. i18n with Yii 2 Advanced Template : https://thecodeninja.net/2014/12/i18n-with-yii-2-advanced-template/

Setting Virtual Host Server Ubuntu 14.04 LTS

  1. How To Set Up Apache Virtual Hosts on Ubuntu 14.04 LTS : https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts
    (
    Tested and works)

 

Override alert yii2 confirm with SweetAlert

Misalkan kalian sudah install widget Sweetalert di Yii2 kalian, tapi kok alert ketika confirm delete dari gridview atau apapun masi menggunakan tampilan alert js biasa, seperti kita menggunakan alert(); biasa.

nah ini ada cara biar semua yg bentuk javascript confirm bisa kita override ke tampilan swal tanpa rubah 1 per 1. Gunakan saja tag ini:

//Override Yii2 javascript confirm
yii.confirm = function (message, okCallback, cancelCallback) {
swal({
title: message,
type: 'warning',
showCancelButton: true,
closeOnConfirm: true,
allowOutsideClick: true,
confirmButtonColor: "#DD6B55",
}, okCallback);
};
  • terus di save misalkan namanya Overridealert.js
  • letakan file di folder “asset” atau tempat biasanya css dan js asset berada
  • jangan lupa daftarkan file asset js anda di Assets.php
  • udah gitu aja