How to access a component of a module from within the module itself

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:

  • a module has a module "entry point", the FooModule which extends CWebModule. Whereas the root application is bootstrapped by the framework itself, starting with your entry script (index.php)
  • the application's SiteController is called inside a module DefaultController
3 1
7 followers
Viewed: 44 154 times
Version: 1.1
Category: Tutorials
Tags: module
Written by: OriginalCopy
Last updated by: Roman Solomatin
Created on: Apr 7, 2009
Last updated: 5 years ago
Update Article

Revisions

View all history

Related Articles