Kohana: relations ORM has_one & belongs_to

Après avoir fait une courte introduction à la librairie ORM de Kohana, après avoir écrit un article vous présentant quelque astuces indispensables pour vous faciliter la vie avec l'ORM, il est venu le temps d'aborder l'implémentation des relations (relationships) entre vos tables avec la librairie ORM.

Pour ce faire, nous allons prendre l'exemple d'une base contenant des étudiants (students) et des voitures (cars) appartenant chacune à un étudant. Le schéma ci-dessous présente de façon graphique les relations entre les entités. Dans cet article seules les relations has_one et belongs_to seront abordés (la première case de l'image) donc une relation un pour un (les autres seront traitées ultérieurement).

ruby-on-rails-data-relationships1.JPG

Lire la suite…

Filed under: Kohana, PHP
Tags: , , , , ,

Articles à venir…

Un petit post pour annoncer les quelque articles qui sont en cours d'écriture ou de traduction:

  • Tout d'abord, un article traitant de la gestion des relations avec la librairie ORM devrait sortir sous peu
  • Je vais bientôt poster une librairie dédiée aux paiements Paypal. Elle permet d'ajouter sur vos sites ces petits boutons paypal que vous voyez partout permettant de payer un service ou un bien ou encore de faire un don. Ceux la:

  • Pas réellement lié à Kohana, j'envisage d'écrire un petit quelque chose sur google apps ou comment mettre en place un serveur mail google pour votre domaine!
  • Si je vois des bouts de code ou des librairies sympa pour Kohana, je les ajouterai sur ce site

Sinon toi, Visiteur, que souhaiterais tu voir être abordé concernant Kohana ?

Filed under: Kohana, PHP
Tags: , , ,

Kohana: mise en production de votre application

Vous avez crée votre application, elle est maintenant prête à être hébergée sur votre serveur de production alors il vous faut vérifier et changer quelque paramètres pour la déployer dans les meilleurs conditions. C'est le propos de l'article

qui est malheureusement en anglais mais très simple à comprendre. Si vous souhaitez une traduction en français, ajouter un petit commentaire sur ce post et j'essaierai de trouver le temps de le traduire) que vous pouvez trouver dans le guide utilisateur de Kohana .

En gros il faut purger les vues, contrôleurs et modèles de ceux que vous n'utilisez pas et de ceux qui y sont de base à titre d'exemple. Il faut aussi changer certains paramètres liés au domaine sur lequel votre application va être hébergée. Enfin il y a quelque petites variables à personnaliser pour améliorer les performances et la sécurité par rapport à un environnement de développement.

De plus la fin de l'article détaille comment il est possible de sécuriser un peu plus votre application en changeant l'arborescence de Kohana et/ou en utilisant un .htaccess pour restreindre ou permettre certains accès.

Quelque notes personnelles:

  • Je trouve ça pas mal de mettre le répertoire system un niveau au-dessus du index.php: il suffit de changer $kohana_system = 'system'; dans index.php en $kohana_system = '../system';. Déjà ca peut permettre de restreindre les accès directs à system comme évoqué plus haut mais surtout ça permettra à toutes vos applications de fonctionner sur le même system, donc une seule mise à jour de ce répertoire sera nécessaire pour être à jour.
  • Grâce à la fonctionnalité de chargement des ressources en cascade de Kohana, lorsque vous avez un fichier que vous avez modifié dans system/config/xxx.php alors mettez le dans application/config. En effet le chargement s'effectue dans cet ordre: application > modules > system. Cela permettra lors d'une MAJ de system de ne pas affecter vos configurations d'application
Filed under: Kohana, PHP
Tags: , , ,

Kohana: Tour d'horizon des modules et librairies pour Kohana

Ce post est juste un listing des librairies et modules pour Kohana faites par des membres de la communauté. Certains sont glanés directement du forum d'autres de blog, CMS ou sites perso.

Le site de Kohana ne propose pas encore un moyen de partager ces ressources directement sur leur site (comme un wiki ou autre) mais ça devrait arriver tôt ou tard. Je ferai en sorte de mettre à jour cet article avec les nouveautés le plus souvent possible en attendant la création d'un dépôt officiel pour les modules.

Module Auth

Description: Permet de mettre en place des mécanismes d'authentification. Il supporte la gestion de rôles et l'auto-login (via cookies). C'est un module officiel donc maintenu par les développeurs de Kohana. Il utilise l'ORM.
Doc: http://doc.kohanaphp.com/addons/auth
Téléchargement: via le téléchargement du site ou le repository SVN

Module Forge

Description: Permet de créer et de gérer des formulaires. Il fournit des méthodes pour afficher, valider et filtrer les formulaires. C'est un module officiel donc maintenu par les développeurs de Kohana.
Doc: http://doc.kohanaphp.com/addons/forge
Téléchargement: via le téléchargement du site ou le repository SVN

Module Media

Description: module permettant de réduire la consommation de bande passante pour vos feuilles de style CSS et codes Javascript. Il intercepte les requêtes /media/css/xxxx.css et /media/js/xxxx.js et est capable de les mettre en cache, les compresser, etc… C'est un module officiel donc maintenu par les développeurs de Kohana (gregmac).
Doc: http://doc.kohanaphp.com/addons/media
Téléchargement: via le téléchargement du site ou le repository SVN

Add-on Template Controller

Description: Permet de gérer en un seul endroit le template de votre site. J'en ai parlé dans l'article Kohana: utilisation du contrôleur Template. C'est un module officiel donc maintenu par les développeurs de Kohana.
Doc: http://doc.kohanaphp.com/addons/template
Téléchargement: ici

Module GRID

Description: Ce module permet de créer des tableaux plus facilement
Doc: http://forum.kohanaphp.com/comments.php?DiscussionID=121
Téléchargement: ici

Module Scaffolding

Description: Ce module permet de génèrer le code source de création, lecture, mise-à-jour et effacement (CRUD) des données d'une base.
Doc: http://mhordecki.wordpress.com/2008/02/07/scaffolding-module-for-kohana-php/
Téléchargement: ici

Librairie Formation

Description: Classe permettant de faire de la validation et de la génération de formulaire. Peut même être utilisée avec un objet ORM pour directement créer le formulaire par rapport aux champs de la base de données.
Doc: http://learn.kohanaphp.com/category/formation
Téléchargement: ici

Module Zend_ACL

Description: Ce module est un portage vers Kohana de la libraire ACL du framework Zend permettant de mettre en place des listes de contrôle d'accès.
Doc: http://framework.zend.com/manual/en/zend.acl.html
Téléchargement: ici

Filed under: Kohana, PHP
Tags: , , , ,

Kohana: validation et upload de fichiers

Ce petit bout de code, fonctionnant uniquement sur une version récente du SVN (qui correspond à une 2.2 hybride où upload::save a été ajouté assez récement et utilisant la nouvelle version de la lib de validation), déniché sur le forum permet d'effectuer les tâches suivantes:

  • Validation de certains attributs d'une image uploadé
  • Traitement sur l'image (réduction)
 
<?php
 
// On mets ici les règles de validation sur l'image
// Le tableau $_FILES doit être valide, l'image doit être de type gif, jpg ou png et ne doit pas dépasser 1 Mo
$_FILES = Validation::factory($_FILES)
    ->add_rules('picture', 'upload::valid', 'upload::type[gif,jpg,png]', 'upload::size[1M]');
 
// Si les règles sont validées
if ($_FILES->validate())
{
 
    // Déplace le fichier dans le répertoire Config::item('upload.directory', TRUE);
    $filename = upload::save('picture');
 
    // Réduit l'image et la sauve
    Image::factory($filename)
        ->resize(100, 100, Image::WIDTH)
        ->save(DOCROOT.'media/pictures/'.basename($filename).'.jpg');
 
    // Supprime le fichier temporaire
    unlink($filename);
 
    // Redirige vers une autre page
    url::redirect('account/information');
}

Le code ainsi que ses mise à jour futures éventuelles peut être trouvé ici.

Filed under: Kohana, PHP
Tags: , , , , , ,