Yii2 使用心得

技巧库 · wy1272086709 · 于 1年前 发布 · 1911 次阅读
  • 使用\yii\helpers\Url::to() 方法和\yii\helpers\Url::toRoute() 方法的区别:

    • 当 to()方法传递数组参数的时候,和直接使用toRoute方法.只使用字符串参数的时候,就会将主机以及路由字符串进行拼接。
    • toRoute() 方法会根据路由规则来生成对应的url.(会生成更简单的,用户路由规则中设置的片段)
  • 在控制器中使用$this->route与使用$this->action->getUniqueId()方法得到的结果一般是一致的。都是用户直接访问的[模块名]/控制器Id/ActionId 的组合字符串.

  • 在控制器中使用return $this->goHome();return $this->goBack(); 方法的区别为:

    • goHome() 方法会跳转到首页的,也就是跳转到默认路由页面,如果更改配置文件中的defaultRoute 则,对应的跳转地址会发生变化。
    • goBack() 方法则会跳转到 Yii::$app->getUser()->getReturnUrl($defaultUrl); 运行的结果地址。如果没有使用 \Yii::$app->getUser()->setReturnUrl() 来设置对应的地址,则会跳转到首页地址。
  • 在配置文件中,配置bootstrap =>['log'] 从代码看,这个log 组件应该是已经被get 一次了,以后再get,会得到第一步get到的对象。

  • Instance::ensure($reference, $type = null, $container = null); $reference 可以传递数组,字符串,对象等等。

    • 当传递数组的时候,就会获取数组中class键对应的值(无此值,则使用$container对象的值),作为类名,然后使用$container 容器(为null,则使用Yii::$container)来获取对应的类。(同时把数组中除了class 的键值对作为参数传递到对应的要生成的类的对象上).
    • 当传递字符串的时候,则会当作componentID,通过对应的容器(如果$container对象不为null,则用这个对象的值作为容器,如果为null,则判断\Yii::$app 是否有这个Component,有的话,则使用\Yii::$app作为容器,否则使用Yii::$container类类作为容器)
    • 当传递对象的时候,就会判断对应的对象是否是$type 类的实例,是则直接返回这个对象。
共收到 1 条回复
forecho#11年前 0 个赞

:clap:,总结是个好习惯。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册