Yii在哪里放置自定义全局功能?

时间:2013-11-28 09:34:36

标签: yii

我创建了一个is_home_page()函数来检测用户是否在主页上,但我不确定我应该把它放在哪里,以便我可以在所有视图和主题上使用?

function is_home_page() {
    $app = Yii::app();
    return $app->controller->route == $app->defaultController;
}

4 个答案:

答案 0 :(得分:13)

在组件

中创建一个MyClass.php文件

您可以在

中编写静态函数
public static function is_home_page() {
        $app = Yii::app();
         return $app->controller->route == $app->defaultController;
     }

可以从任何位置访问,如下面的控制器,模型或视图

MyClass::is_home_page();

希望这可以帮助您在全球范围内编写任意数量的函数并从任何地方访问它们

答案 1 :(得分:6)

创建一个文件helpers.php并将其放在components文件夹

保护
    | -components
    | -helpers.php

并在config main.php文件的顶部添加此行

require_once( dirname(__FILE__) . '/../components/helpers.php');

并在helpers.php里写下你的函数

<?php
     function is_home_page() {
        $app = Yii::app();
         return $app->controller->route == $app->defaultController;
     }

?>

现在可以在整个应用程序中访问此函数直接调用is_home_page()任何位置,它将返回您的值。

答案 2 :(得分:1)

您可以使用所有帮助程序方法创建类Globals。例如:

   class Globals{
       public function is_home_page() {
           $app = Yii::app();
           return $app->controller->route == $app->defaultController;
       }
   }

而不是main.php部分components设置:

  'globals' => array(
       'class' => 'alias.to.location.Globals'
  )

而不是代码,您可以使用此Yii::app()->globals->is_home_page()

答案 3 :(得分:-1)

对于Yii 2.0,请参阅这篇文章:

http://www.yiiframework.com/wiki/747/write-use-a-custom-component-in-yii2-0/

我正在编辑它以用于测试目的。