2013-11-28 3 views
5

Я создал функцию is_home_page(), чтобы определить, находится ли пользователь на главной странице или нет, но я не уверен, где я должен поместить его, чтобы я мог использоваться для всех просмотров и тем?Yii где поставить пользовательскую глобальную функцию?

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

ответ

12

создать файл с MyClass.php внутри компонентов

You может записывать статические функции внутри, как

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

, которые могут быть доступны из любой точки, как контроллер, модель или представления как ниже

MyClass::is_home_page(); 

надеюсь, что это поможет вам написать любое количество функций по всему миру и получить к ним доступ из любого места

+0

сладким, не нужно ничего редактировать в 'config/main.php'! благодаря! – user2636556

6

сделать файл helpers.php и поместить его в папку компоненты

защищенный
        | -компонентов
                | -helpers.php

И добавьте эту строку в верхней части конфигурационного файла 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() где угодно, и оно вернет ваше значение.

+0

я должен задать псевдоним для него? 'Yii :: setPathOfAlias ​​('bootstrap', dirname (__ FILE__). '/../ components/helpers.php');'? – user2636556

+1

не нужно, если это можно сделать просто тогда, почему вы это сделаете. –

+0

спасибо, очень полезно) –

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()

+0

в 'protected/components/Helpers.php' right? и 'alias.to.location.Globals' будет' application.components.Helpers'? – user2636556

+1

Почему бы не поместить его в '' import '=> array() 'в main.php? – user2636556

+0

Лучшее заданное имя файла как 'Globals.php' (имя файла должно быть равно имени класса). Если класс будет находиться в 'protected/components/Globals.php', чем alias' application.components.Globals' – CreatoR

Смежные вопросы