The Yii documentation states:
An application module may be considered as a self-contained sub-application that has its own controllers, models and views and can be reused in a different project as a whole. Controllers inside a module must be accessed with routes that are prefixed with the module ID.
So, in practice, a module can be handled like an application, but with minor differences.
Suppose you had a custom component 'foo' in your application:
return array( 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 'preload'=>array('log'), 'import'=>array( 'application.models.*', 'application.components.*' ), 'components'=>array( 'db'=>array( ), //right down here: 'foo' => array( 'param1' => 'val1' ) ),
...and you need to move it inside a module called 'bar':
return array( 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 'preload'=>array('log'), 'import'=>array( 'application.models.*', 'application.components.*' ), 'components'=>array( 'db'=>array( ) ), 'modules' => array( 'bar' => array( 'components' => array( 'foo' => array( 'param1' => 'val1' ) ) ) ) //...
Now instead of using the component:
Yii::app()->foo
You call it from within the module:
Yii::app()->controller->module->foo
or
Yii::app()->getModule('module')->foo
As you can see, your module is indeed just another application, and you can configure any parameters as you'd do with your "root" application. The only organizational differences are:
Total 1 comment
Use Yii::app()->getModule('bar')->foo to access 'foo' components, so that you can do it across the whole project while Yii::app()->controller->module->foo only works if it's in 'bar' module.
Leave a comment
Please login to leave your comment.