// Vous lisez...

PHP

Trucs utiles pour le framework KohanaPHP v. 2.x

Useful tips for KohanaPHP v. 2.x framework

 Provoquer une erreur 404

  1. Event::run('system.404');

 Désactiver le buffer de sortie

Dans MY_Controller.php :

  1. public function __construct() {
  2.         parent::__construct();
  3.         Kohana::close_buffers();
  4. }

Attention, si placé à cet endroit le buffer sera désactivé partout, ce qui provoquera la nullité de url::redirect. Pour un usage ponctuel, placer simplement Kohana::close_buffers(); en tête de méthode, dans un contrôleur :

  1. public function import() {
  2.         Kohana::close_buffers();
  3.         ob_start();
  4. (...)

Ajouter éventuellement :

  1. public function before() {
  2.         // empty the output buffer
  3.         ob_end_flush();
  4.         // call parent before() just incase there's anything
  5.         // in the parent before that you need/want to execute
  6.         parent::before();
  7. }

Et finalement dans votre script :

  1. (...)
  2. (...)

 Sélectionner les users ayant un certain rôle

You want to do this :

$members = ORM::factory('role', 'member')->users;

You take the role and find it’s users, not the other way around.

From Zombor @StackOverflow


 Ajouter un option vide en première position d’un form::dropdown

Dans le contrôleur :

  1. $countries = array('' => 'Choisissez...');
  2. $countries .= ORM::factory('country')->select_list('id', 'country');

Dans la vue :

La première valeur (vide) sera sélectionnée. Cette syntaxe est compatible avec jquery.validate !

Alternative :

  1. $clients = ORM::factory('client')->orderby('name', 'asc')->select_list('id', 'name');
  2. $clients[0] = 'Choisissez...';
  3. $this->template->content->clients = $clients;
  1. <?php
  2. echo form::label('client_id', 'Client*');
  3. echo form::dropdown('client_id', $clients, 0);
  4. ?>

 Récupérer un unique résultat issue de l’objet $db

  1. $max_numero = $this->db->query('SELECT MAX( numero ) as numero FROM folders WHERE folder_id ='.$project_id)->current();
  2. echo $max_numero->numero;

 Vérifier si un certain Role est affecté à un User

Check if a User has a certain Role

  1. $user = ORM::factory('user', $this->input->post('email'));
  2. if ($user->has(ORM::factory('role', 'production'))) {
  3.         // has the "production" role
  4. } else {
  5.         // hasn't
  6. }

 Outrepasser la boucle foreach() si vous savez que find_all ne renverra qu’un seul résultat

Avoid foreach() loop when you’re sure find_all() will return a single result

Controller

  1. // use find() instead of find_all
  2. $this->template->content->citation = ORM::factory('production_field')->where('user_id', Auth::instance()->get_user()->id)->where('rubrique', 'citation')->find();

View

  1. <?php // no need to loop through 1 result!
  2. echo rawurldecode($citation->content); ?>

 Aucune vue pour la méthode d’un contrôleur

Set no view for a method in a controller

This one is really basic, but sometimes I just can’t remember the syntax (I get confused with CakePHP ’s).

Method

  1. $this->auto_render = false;

This article will be updated from time to time...