10

How to create a module in yii2 and setting up the same on configuration. I've been searching a while on google and I cannot find that much tutorial on it. Please help.

5
  • 1
    If there aren't any tutorials then you could look at existing modules to see how they've been written: github.com/Codeception/Codeception/blob/master/src/Codeception/… Commented Jul 1, 2014 at 13:30
  • yeah, i've been checking on the modules but most of the configuration for Modules setting 'class' path and I couldn't find a way to organize the code for this configuration which found on YII2 documentation 'modules' => [ 'v1' => [ 'basePath' => '@app/modules/v1', ], 'v2' => [ 'basePath' => '@app/modules/v2', ], ], Commented Jul 2, 2014 at 4:57
  • 1
    hmmm this guide describes how to create a module stuff.cebe.cc/yii2docs/guide-structure-modules.html Commented Jul 2, 2014 at 10:08
  • @Fortran: You should convert your reply in an answer. It is indeed the way to do it. Basically it's the same as in Yii 1. Commented Jul 2, 2014 at 15:11
  • It is still very confusing because the tutorial does not show how to use a module on a view. Commented Jun 16, 2015 at 14:32

2 Answers 2

6

Option 1

  1. Create a modules folder on your application base path. This would be what corresponds to your @app alias of your currently running application. This is the same as the root folder of basic template or backend/frontend in the advanced template.

  2. Inside your modules folder create a folder for your module corresponding to the Module ID.

  3. Your Module Class should be inside this module folder and should extend \yii\base\Module. This is a basic working example for your module class.

    <?php namespace app\modules\home; class Home extends \yii\base\Module { public $controllerNamespace = 'app\modules\home\controllers'; public function init() { parent::init(); // custom initialization code goes here } } 
  4. Create your module controller, models and views folder on the same folder.

  5. To access the module, you need to add this to your application configuration:

    <?php ...... 'modules' => [ 'home' => [ 'class' => 'app\modules\home\Home', ], ], ...... 

Option 2

  1. If you are using Gii module, go to module generator and enter path to module class. This would be the same as app\modules\home\Home in option 1

  2. Preview and Generate all files. Change application configuration as in Option 1 according to your module class.

Sign up to request clarification or add additional context in comments.

Comments

4
  1. Install Gii in yii2. Use documentation.
  2. Then use module generator. You need the web permission to create the file for the the folder OR you can copy paste the generated code and create the specified file manually.
  3. When generation is complete it will show you a green text. For try module" (When folder have the web permission) OR Copy following code to main.php configuration file under module. Replace modulename with yours.

    'modules' => [ 'modulename' => [ 'class' => 'app\modules\modulename\Module', ], ] 

Please leave comment if still have confusion. I will edit to make this more sense.

2 Comments

yeah.. I could create modules and it successfully worked out. but can i put a seperate error handler for this newly created module?
Remember: you must declare in app/config/main.php the modules your app will use; where app is the root folder of your frontend (for example it could be /frontend or /backend for advanced template based webapp)

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.