Istilah yang aneh. Ya, saya tidak mendapatkan judul yang cocok untuk tulisan kali ini. Intinya begini, berhubung folder vendor pada aplikasi Yii 2 semakin hari semakin besar (baca: kembung), saya berinisiatif untuk menggunakan folder tersebut untuk aplikasi-aplikasi selanjutnya. Aplikasi selanjutnya berarti selain frontend dan backend. Jadi, untuk core aplikasinya saya membuat folder app_aplikasiku sedangkan untuk webnya saya membuat folder web_aplikasiku.

Hasilnya kurang lebih menjadi begini:

|-root
  |-common
  |-backend
  |-frontend
  |-app_aplikasiku
  |-web_aplikasiku
  |-console
  |-environments
  |-vendor

Caranya mudah, pertama salin isi folder frontend ke folder app_aplikasiku. Kemudian salin isi frontend/web ke web_aplikasiku.

Selanjutnya, modifikasi isi file web_apikasiku/index.php dengan menyesuaikan folder vendornya pada baris-baris berikut:

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

Selanjutnya, kita masih memiliki dua pilihan, antara memanfaatkan folder common atau tidak. Jika kita masih memanfaatkan folder common, berarti konfigurasi yang menyebutkan folder common tersebut harus tetap ada. Namun, ketika kita ingin membuang common dari aplikasi kita, artinya kita akan membuat folder common dan dua folder aplikasi kita, yakni app_aplikasiku dan web_aplikasiku, benar-benar independen.

Berikut caranya:

  • Buang semua sintaks yang memanggil file-file pada folder common, misalnya pada file web_aplikasiku/index.php, menjadi seperti ini:
<?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__ . '/../app_aplikasiku/config/bootstrap.php');

$config = yii\helpers\ArrayHelper::merge(
 // require(__DIR__ . '/../common/config/main.php'),
 // require(__DIR__ . '/../common/config/main-local.php'),
 require(__DIR__ . '/../app_aplikasiku/config/main.php'),
 require(__DIR__ . '/../app_aplikasiku/config/main-local.php')
);

$application = new yii\web\Application($config);
$application->run();
  • Buang sintaks yang mengandung common pada file app_aplikasiku/config/main.php menjadi seperti berikut
$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')
);
  • Masih pada file app_aplikasiku/config/main.php, tambahkan nilai return berikut:
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
  • Untuk databasenya, pada file app_aplikasiku/config/main-local.php, tambahkan pada components -> db. Salin saja dari main-local.php milik backend.
  • Untuk file app_aplikasiku/config/bootstrap.php, sesuaikan saja dengan kebutuhan, misalnya seperti ini:
<?php
Yii::setAlias('app_2h', dirname(dirname(__DIR__)) . '/app_2h');
Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console');

Nah, langkah berikutnya yang paling penting adalah penyesuaian namespace pada folder app_aplikasiku. Pastikan kita telah menyesuaikan namespace pada bagian awal sintaks dengan namespace berikut:

namespace app_aplikasiku\controllers;

Adapun penyesuaian tersebut harus dilakukan pada:

  1. assets\AppAssets.php
  2. controllers\*Controller.php
  3. models\*.php
  4. views\layouts\main.php, jika ada
  5. widgets\Alert.php

Selanjutnya, untuk setting production atau development harus kita lakukan secara manual. Silakan lihat perbedaannya pada tulisan berikut: link.

Demikian, semoga bermanfaat!

Advertisements