落叶 2011-05-07 15:42:34 14314次浏览 23条回复 2 0 0

第一步:用GII会成一个admin的模块[attach]137[/attach]这是目录结构这个用GII就可以创建出来,这步大家都会使用,我不再详细讲解其使用。 第二步:打开(模块名+Module.php)的文件,我这里是oldweeklyadminModule.php文件进行编辑 里面有一个OldweeklyadminModule的类继承于CWebModule 首先我们调用init的方法

public function init()
{
    parent::init();//这步是调用main.php里的配置文件
    //当Module创建时这个方法就会被调用
    // 我们可以修改代码来定制Module

    // import the module-level models and components
    $this->setImport(array(
        'oldweeklyadmin.models.*',
        'oldweeklyadmin.components.*',
    ));
    //这里重写父类里的组件
    //如有需要还可以参考API添加相应组件
    Yii::app()->setComponents(array(
        'errorHandler'=>array(
            'class'=>'CErrorHandler',
            'errorAction'=>'oldweeklyadmin/default/error',
        ),
        'user'=>array(
				'class'=>'CWebUser',
				'stateKeyPrefix'=>'oldweeklyadmin',
				'loginUrl'=>Yii::app()->createUrl('oldweeklyadmin/default/login'),
			),
		), false);
		$this->generatorPaths[]='oldweeklyadmin.generators';
		$this->controllerMap=$this->findGenerators();
	}

如果进入module的时候要进行密码验证并且和前台登录分开 就要进行设置对执行的动作进行识别

public function beforeControllerAction($controller, $action)
{
		if(parent::beforeControllerAction($controller, $action))
		{
			$route=$controller->id.'/'.$action->id;
			if(!$this->allowIp(Yii::app()->request->userHostAddress) && $route!=='default/error')
				throw new CHttpException(403,"You are not allowed to access this page.");

			$publicPages=array(
				'default/login',
				'default/error',
			);
			if(Yii::app()->user->isGuest && !in_array($route,$publicPages))
				Yii::app()->user->loginRequired();
			else
				return true;
		}
		return false;
	}
       protected function allowIp($ip)
	{
		if(empty($this->ipFilters))
			return true;
		foreach($this->ipFilters as $filter)
		{
			if($filter==='*' || $filter===$ip || (($pos=strpos($filter,'*'))!==false && !strncmp($ip,$filter,$pos)))
				return true;
		}
		return false;
	}

设置资源文件路径

	public function getAssetsUrl()
	{
		if($this->_assetsUrl===null)
			$this->_assetsUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('oldweeklyadmin.assets'));
		return $this->_assetsUrl;
	}

	public function setAssetsUrl($value)
	{
		$this->_assetsUrl=$value;
	}

总结:YII里提供给我们不少有用的源码,e.g:GII模块,这个例子的来源于GII的写法

您需要登录后才可以回复。登录 | 立即注册