- 路由:两种方式,第一种是默认方式访问,假设配置了虚拟主机,那么localhost/web/index.php?r=admin/index 访问的是controllers目录下的admin控制器里的index方法。如果使用的是modules,那么localhost/web/index.php?r=admin/admin/index 访问的是modules目录下的admin模块admin控制器里的index方法。控制器必须要加 Controller ,普通的类不要加 Controller ,方法前必须加action,否则路由不能识别。驼峰命名的控制器名还有方法名(yii里称控制器ID,模块ID等)在路由里要加 - ,比如:UserLoginController 要写成 user-login。美化的url需要使用url管理器。web.php里配置urlManager,后续更新URLmanager用法。。
- 应用:
- aliases: 可以通过aliases给路径起个别名。
- bootstrap: 给一个模块自定义一个url规则。注:启动组件太多浪费性能。
- catchAll:维护模式下使用,指定一个控制器方法处理所有用户请求。
- components: 注册应用组件。
- controllerMap:不想用默认的控制器ID指向控制器类,可以配置此属性,使用自定义的控制器ID指向控制器类。
- modules:配置模块类
- name:显示给终端用户的应用名称。
- viewPath:指定视图文件的根目录
- yii框架流程图:
- 控制器:控制器的方法如果有参数的话,最好是设置默认值,不然页面中没有传相对应的参数时会报错。方法前面加action,Yii 使用
action
前缀区分普通方法和操作。action
前缀后面的名称被映射为操作的 ID。 - 视图:控制器里渲染视图使用 $this->render('', []); 第一个参数时url, 第二个是传的参数,视图文件可以使用<?=Html::encode($var)?> 输出变量。视图文件保存的路径 views/控制器ID/视图文件名.php。视图文件名直接和方法名相同名字不容易出问题把。(受tp的影响-_-#)
- 模型:创建模型,一种是与数据表无关的,即创建表单;另一种与数据表有关。 被用于普通模型类的父类并与数据表无关, 通常是普通模型类的父类但与数据表有关联(译注: 类其实也是继承自 ,增加了数据库处理)。class UserForm extends Model{}创建表单。UserForm里的rules方法用来验证表单数据。验证表单数据可以调用UserForm实例化的模型的validate() 方法来触发数据验证,如果数据验证失败,hasErrors将被设置为true,通过调用getErrors获取错误信息。(new UserForm)->validate()触发数据验证。继承了activeRecord的模型,yii会根据类名去找数据表,当然也可以通过tableName()方法显式指定表名。
// 获取 country 表的所有行并以 name 排序$countries = Country::find()->orderBy('name')->all();// 获取主键为 “US” 的行$country = Country::findOne('US');// 输出 “United States”echo $country->name;// 修改 name 为 “U.S.A.” 并在数据库中保存更改$country->name = 'U.S.A.';$country->save();
linkPager小部件显示分页。
- 自动加载:要使用 Yii 的类自动加载器,你需要在创建和命名类的时候遵循两个简单的规则,每个类都必须置于命名空间之下 (比如
foo\bar\MyClass
);每个类都必须保存为单独文件,且其完整路径能用以下算法取得,$classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php');