下载框架:https://github.com/yiichina/yii

创建一个新的空白应用(cmd 命令):

framework/yiic [appname] [path/to]
  • 入口配置:protected/config/main.php
'components'=>[
    //伪静态配置
    'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),
]
  • 伪静态:.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/(.*)\.(css|jpg|js|gif|png|bmp)/
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
//获取配置文件main中的配置值和应用组件
Yii::app()->basePath;
Yii::app()->name;
Yii::app()->params->adminEmail;
//组件配置在main中的components键中
Yii::app()->db;
Yii::app()->cache;
Yii::app()->user;
  • 可以在controller 目录创建 actions (可自定义)目录用于存放action类,达到action复用的目的:
//protected/controllers/post/UpdateAction.php
class UpdateAction extends CAction {
    public function run() {
        // place the action logic here
    }
}

//protected/controllers/ArticleController.php
class ArticleController extends Controller {

    public function actions() {
        return [
            'edit'=>'application.controllers.post.UpdateAction'
        ];
    }
}
  • 可以在action方法中加入参数,可直接获取到get来的参数:
public function actionView($id, $act, $name='joyber') {
    // main中的路由配置中的$id动态参数
    echo $id;
    // $_GET['act']
    echo $act;
    // $_GET['name'] 不存在name参数时默认值:joyber
    echo $name;
    // post xxy
    $xxy = Yii::app()->request->getPost('xxy');
}
  • widget 自定义组件 可以放在components 目录 视图中应用:<?php $this->widget('MyWidget', ['data'=>123]) ?>
//components/MyWidget.php
class MyWidget extends CWidget {

    public $btn;

    public function init() {

        // 此方法会被 CController::beginWidget() 调用
    }

    public function run() {
        // 此方法会被 CController::endWidget() 调用
        parent::run(); // TODO: Change the autogenerated stub
        $this->render('my', ['btn'=>$this->btn, 'name'=>'my test widget']);
    }

}

//view file: components/views/my.php
<input type="text" value="<?=$name?>">
<button><?=$btn?></button>

标签: yii

添加新评论