2013-11-28 14 views
5

Bir kullanıcının ana sayfada olup olmadığını algılamak için bir is_home_page() işlevi oluşturdum, ancak tüm görünümlerde ve temalarda kullanabilmem için nereye koyacağımı bilmiyorum?Yii, özel bir global işlevi nereye koyacağınız?

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

cevap

12

kullanabilir

gibi statik işlevleri yazabilir herhangi ulaşılabilir
public static function is_home_page() { 
     $app = Yii::app(); 
     return $app->controller->route == $app->defaultController; 
    } 

MyClass::is_home_page(); 

umut bu global fonksiyonların herhangi bir sayıda yazmak için yardımcı ve Yii için her yerde

+0

'un bileşenlerine yerleştirmelisiniz, 'config/main.php' içinde de herhangi bir şeyi düzenlemeye gerek yok! Teşekkürler! – user2636556

6

bir dosya helpers.php yapmak ve iç bileşenler
        korumalı bir klasör

koydu | -helpers.php |
                -Bileşenler

Ve yapılandırma Main.php dosyası

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

üst bu satırı ekleyin ve içerde Şimdi bu fonksiyon doğrudan çağrı bütün uygulamada erişilebilir işlevinizi

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

?> 

yazmak helpers.php is_home_page() herhangi bir yerde ve değerinizi döndürecektir.

+0

i bunun için bir takma ad belirlesin? Yii :: setPathOfAlias ​​('bootstrap', dirname (__ FILE__). '/../ bileşenleri/helpers.php'); '? – user2636556

+1

gerekli değildir, eğer basitçe yapılabilirse neden böyle yapacaksınız. –

+0

teşekkürler, çok yararlı) korumalı/bileşenler/Helpers.php'de –

1

Tüm yardımcı araçlar yöntemiyle sınıf Globals oluşturabilirsiniz.

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

daha components set bölümü main.php yılında: Örneğin:

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

Eğer bileşenleri

You içinde bir dosya oluşturmak bir MyClass.php bu Yii::app()->globals->is_home_page()

+0

sağ? ve "alias.to.location.Globals", application.components.Helpers 'olurdu? – user2636556

+1

neden main.php'de 'import' => array() 'içine koymuyor? – user2636556

+0

Dosya için daha iyi bir isim 'Globals.php' olarak adlandırıldı (dosya adı, sınıfın adına eşit olmalıdır). Sınıfın 'application.components 'adlı korumalı/component/Globals.php'de olması durumunda.Globals' – CreatoR