您的位置:首页 > 编程语言 > PHP开发

yii框架的模块(module)配置

2011-11-24 14:23 363 查看
yii中的模块看起来更像一个应用。主要区别是模块不能单独部署,必须存在于一个应用中。用户可以像访问普通应用控制器那样,访问模块中的控制器。

模块在一些大型应用中,非常有用,可以将应用划分为几个模块,每个模块可以单独维护。

紧接上篇文章《yii框架之hello world》,在modules文件夹下,建立hello文件夹。即在“模块(modules)”目录下,建立hello模块。如图示:

在hello模块中,下面的结构和普通的yii应用是一样的。,建立一个HelloModule.php文件,模块文件的类必须继承CWebModule的模块类。类的名称为:$id.“Module”,$id代表模块的ID。因为模块的名称为hello,所以这个文件名为:helloModule,内容如下:

HelloModule.php
<?php
class HelloModule extends
CWebModule {
}
?>
controllers/PostController.php的内容: 

PostController.php
<?php
class PostController extends
CController {
public function
actionWorld() {
      $this->render("hw",
array("varYii"
=> "hi yii Module"));

   }
}
?>
可以看出,这里的写法和上篇文章的Controller写法是一模一样的。因为控制器Id是post,所以,我们在views下,建立post文件,建立一个hw.php的文件,为什么文件是是hw.php呢?因为$this->render("hw",
array("varYii"
=> "hi yii Module"));
展示的内容是hw,所以要建一个hw.php的文件(注意路径)。如图示:

hw.php的内容如下:

hw.php
<?php
echo $varYii;
?>
这里,还需要对appyii/protected/config/main.php进行修改,增加模块熟悉。main.php的内容如下:

main.php
<?php
return array(
"modules" =>
array("hello",),

);
?>
另外,appyii/index.php的内容也要引入对main.php的应用。内容如下:

index.php
<?php
require_once(dirname(__FILE__) .
'../../yii-1.1.6/framework/yii.php');

$config = dirname(__FILE__) .
'/protected/config/main.php';

Yii::createWebApplication($config)->run();

?>
-----------------------------------------------------

至此,配置结束。模块中的控制器动作通过 r=moduleID/controllerID/actionID进行访问。运行一下,看看结果。

--

 另外,说明一下,如果一个控制器位于controller目录的子目录中,我们仍然可以通过上述的访问方式访问,例如,假设PostController位于hello/controllers/aa中,我们仍然可以通过 r=hello/aa/post/world 进行访问。但是需要注意,如果PostController.php的代码不做改动,要想访问到hw.php,需要对目录进行如下调整:modules/hello/views/aa/post/hw.php
,对比原来的目录:modules/hello/views/post/hw.php
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息