2013-11-28 7 views
5

Ho creato una funzione is_home_page() per rilevare se un utente si trova nella home page o no, ma non sono sicuro di dove dovrei inserirlo in modo che possa essere utilizzato su tutte le viste e temi?Yii dove inserire una funzione globale personalizzata?

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

risposta

12

creare un file di un MyClass.php all'interno componenti

È puoi scrivere le funzioni statiche all'interno come

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

cui si può accedere da ogni dove come controllore, Modello o Visualizza come di seguito

MyClass::is_home_page(); 

speranza che questo vi aiuterà a scrivere qualsiasi numero di funzioni a livello globale e accedervi da qualsiasi luogo

+0

dolce, non devi modificare nulla in 'config/main.php' troppo! Grazie! – user2636556

6

rendere un file helpers.php e metterlo componenti all'interno della cartella

protetta
        | -Componenti
                | -helpers.php

E aggiungere questa riga nella parte superiore del vostro file config main.php

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

e all'interno di quella helpers.php scrivere la vostra funzione

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

?> 

Ora questa funzione è accessibile in tutta l'applicazione chiamare direttamente is_home_page() any where e restituirà il tuo valore.

+0

Devo impostare un alias per esso? 'Yii :: setPathOfAlias ​​('bootstrap', dirname (__ FILE__). '/../ components/helpers.php');'? – user2636556

+1

non è necessario se può essere fatto semplicemente allora perché farai così. –

+0

grazie, molto utile) –

1

È possibile creare la classe Globals con il metodo di tutti gli helper. Per esempio:

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

che in main.php sezione components set:

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

che nel codice che possono utilizzare questo Yii::app()->globals->is_home_page()

+0

in 'protected/components/Helpers.php' giusto? e 'alias.to.location.Globals' sarebbe' application.components.Helpers'? – user2636556

+1

perché non metterlo in "import" => array() 'in main.php? – user2636556

+0

Nome del set migliore per il file come 'Globals.php' (il nome del file deve essere uguale al nome della classe). Che se la classe sarà in 'protected/components/Globals.php' di alias' application.components.Globals' – CreatoR