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を作成して使用することができます内部に静的関数を書くことができます

いずれからもアクセスすることができ
public static function is_home_page() { 
     $app = Yii::app(); 
     return $app->controller->route == $app->defaultController; 
    } 

が、これはあなたが世界的に任意の数の機能を書いて、Yiiのためにどこでも

+0

sweetのコンポーネントに置く必要があります。 'config/main.php'でも何も編集する必要はありません!ありがとう! – user2636556

6

ファイルhelpers.phpを作り、その中のコンポーネントフォルダ
       を保護

を置く|
               を-components | -helpers.php

そして、あなたのコンフィグmain.phpファイル

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

の上にこの行を追加し、その内側に今、この関数は直接呼び出すアプリケーション全体でアクセス可能である、あなたの関数

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

?> 

を書くhelpers.php is_home_page()どこにいてもあなたの値を返します。

+0

は、私はそれのためのエイリアスを設定する必要がありますか? 'Yii :: setPathOfAlias( 'bootstrap'、dirname(__ FILE__)。 '/../ components/helpers.php');'? – user2636556

+1

それは単純に行うことができれば、そのようにする理由はありません。 –

+0

ありがとう、非常に役に立ちます) –

1

すべてのヘルパーメソッドを使用してクラスGlobalsを作成することができます。 main.phpセクションcomponentsよりも

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

セット:たとえばコードに比べて

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

あなたはこのYii::app()->globals->is_home_page()

+0

は 'protected/components/Helpers.php'の権利ですか? 'alias.to.location.Globals'は' application.components.Helpers'でしょうか? – user2636556

+1

main.phpの '' import '=> array() 'に入れてみませんか? – user2636556

+0

'Globals.php'(ファイル名はクラス名と同じでなければなりません)として、ファイルのより良いセット名を指定します。クラスが 'application/components 'のエイリアスより' protected/components/Globals.php'にある場合よりも。グローバルなもの – CreatoR

関連する問題