2015-11-11 1 views
0

J'ai de telles tables: livre et personne. Un livre peut être à la main d'une personne. J'ai créé le formulaire pour le livre en gii. Dans la forme je peux écrire le nom d'un livre et sélectionner une personne, qui a pris le livre. Dans le contrôleur de livre que j'écrisYii2- fonction commune pour certains contrôleurs- où écrire le code

return $this->render('create', [ 
     'model' => $model, 
     'persons_dropdown' => getDropdown('app\models\Person', 'name'), 
    ]); 

"persons_dropdown" est le tableau comme 1 => "John Smith", 2 => "Stan vert". La getDropdown fonction est:

public function getDropdown($model, $colomn) 
    { 
     $rows = $model::find()->orderBy('id')->asArray()->all(); 
     return ArrayHelper::map($rows, 'id', $colomn); 
    } 

La question est- où je devrais remplacer getDropdown fonction() (cette fonction est fonction universelle pour tout contrôleur et il serait utilisé dans certains contrôleurs)? Ou peut-être que je peux obtenir le tableau nécessaire par yii outils, sans ma fonction.

+0

Référez-vous à http://stackoverflow.com/questions/31651613/how-to-write-global-functions-in-yii2-and- access-them-in-any-view-pas-le-custo/36555983 # 36555983 –

Répondre

1

Une bonne solution est de créer une aide pour ce type de fonction

Essentiellement, vous pouvez créer une classe appropriée dans votre modèle et reportez-vous à la fonction correspondante/méthode en déclarant (public static)

use common/models/YourHelper; 


YourHelper::yourMethod(); 

Quelqu'un crée un fournisseur personnel et ajoute ce type de fonction commune dans un sous-répertoire auxiliaire