61 votes

Conseils et fonctionnalités préférés de Kohana ?

Inspiré des autres wikis communautaires, je suis intéressé par les trucs, astuces et fonctionnalités moins connus de Kohana.

  • Veuillez n'inclure qu'un seul conseil par réponse.
  • Ajouter des versions de Kohana si nécessaire.

Il s'agit d'un wiki communautaire .

23voto

Kemo Points 6013

Génération des options de Form::select() à partir du résultat de la base de données

Kohana 3.1 et 3.0

$options = ORM::factory('model')
 ->order_by('title','ASC')
 ->find_all()
 ->as_array('id','title');

$select = Form::select('name', $options);

Il convient de noter que cette fonctionnalité n'est pas limitée à l'ORM et peut être utilisée sur tous les résultats de base de données (ils supportent tous as_array). Voir la page résultats de la base de données pour plus de détails.

Si vous voulez ajouter une option par défaut :

$options = Arr::merge(array('Please select a value.'), $options);

17voto

dusan Points 3778

Afficher la dernière requête exécutée

Kohana 3.1 et 3.0

echo Database::instance()->last_query

Tiré de Dans Kohana 3, comment déterminer les erreurs commises lors d'une requête ? .

17voto

Edy Points 51

Définir Kohana::$environment

Collez ces lignes dans votre .htaccess :

SetEnvIf SERVER_ADDR "^(127\.0\.0\.1|::1)$" KOHANA_ENV=development
SetEnvIf SERVER_ADDR "^((?!127\.0\.0\.1|::1).)*$" KOHANA_ENV=production

maintenant, si vous êtes sur localhost, vous êtes en mode développement, sinon vous êtes en mode production

Edit : Ajout du support pour IPv6

15voto

dusan Points 3778

Ajouter des données aux tableaux croisés dynamiques à l'aide de l'ORM

ORMs add accepte un troisième paramètre où vous pouvez spécifier des données supplémentaires à sauvegarder sur le tableau 1pivot1.

Par exemple, si un utilisateur a plusieurs rôles et qu'un rôle a plusieurs utilisateurs (par le biais d'une table nommée 1roles_users1), vous pouvez sauvegarder les informations dans la table 1pivot1 en passant un tableau de clés de colonnes et de valeurs de données comme troisième argument de la fonction add méthode.

Kohana 3.1

Non pris en charge. L'alternative serait de charger le pivot table et ajoutez les données comme vous le feriez avec n'importe quel autre tableau.

Kohana 3.0

$user->add('role', $role, array('date_role_added' => time()));

$role est ORM::factory('role', array('name' => 'user'));

0 votes

J'ai déjà appris quelque chose de nouveau. Merci.

0 votes

Vous pouvez également le faire en définissant $_created_column dans le modèle :)

0 votes

@Kemo ; Pas sur les tableaux croisés dynamiques (sauf si vous avez un modèle défini pour eux). @dusan ; Comment faites-vous pour lire les données à partir du pivot ? Je n'ai pas trouvé de moyen de le faire en utilisant l'ORM.

15voto

biakaveron Points 1

La différence entre this->request->route->uri() y this->request->uri() (Kohana 3)

// Current URI = welcome/test/5 
// Using default route ":controller/:action/:id"

// This returns "welcome/test/5"
echo $this->request->uri(); 

// This returns "welcome/test1/5"
echo $this->request->uri(array( 'action' => 'test1' )); 

// This returns "welcome/index"
echo $this->request->route->uri();

// This returns "welcome/test1"
echo $this->request->route->uri(array( 'action' => 'test1' ));

Comme vous pouvez le voir, $this->request->route->uri() utilise les valeurs par défaut de la route actuelle (id est nul), tandis que $this->request->uri() applique les segments uri actuels.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X