2010-09-13 35 views
1
<?php 
// My controller. 
$marcas = ORM::Factory('marca')-> 
find_all()-> 
as_array('nome', 'nome'); 
array_unshift($marcas, '-- Selecione --'); 
?> 

<?php 
// My view. 
echo Form::select('marca', $marcas, '-- Selecione --') 
?> 

Existe-t-il un moyen plus rapide d'ajouter une option par défaut dans un select? Merci.Kohana Framework: ajouter une option par défaut

+1

Y at-il raison de '- Selecione -' param dans 'Form :: select()'? Vous devriez utiliser des clés de tableau au lieu de valeurs: 'Form :: select ('marca', $ marcas, 0)' – biakaveron

Répondre

0

Votre façon de faire est très rapide et élégante, en utilisant la fonctionnalité de l'infrastructure existante avec certaines données intelligentes pour en tirer parti.

Vous pouvez probablement étendre Form :: select() avec votre propre code si vous souhaitez que tout comportement personnalisé ne soit pas totalement pris en charge. Je sais que Kohana suggère fortement d'étendre ses classes de base, mais je n'ai pas encore joué avec Kohana3. Dans Kohana2, vous le feriez as seen here. Selon this tutorial pour Kohana3 vous le feriez de la même manière, mais en plaçant votre nouveau fichier dans le dossier application/classes.

Un coup sauvage à deviner comment cela fonctionnerait: créer form.php dans l'application/classes et entrez:

class Form extends Form_Core { 

    public static function select() { 
     /** 
     * Add the code from http://dev.kohanaframework.org/projects/kohana3-core/repository/revisions/master/entry/classes/kohana/form.php#L252 
     * and change it slightly to also include a default value when writing out 
     * the form, or even better via another optional function parameter 
     */ 
    } 
} 
0

Attention cependant si vous utilisez la clé du tableau pour la valeur de base de données, par exemple en tant que champ de recherche. Array_unshift renumérotera vos éléments afin que vous préférerez peut-être Arr::unshift($marcas, '', '--Selecione--'); .Le autre avantage est que retourne le tableau, de sorte que vous pouvez utiliser dans les params d'appel de fonction plutôt que comme une ligne distincte

Référez Arr::unshift()

<?php echo Form::select('marcas', Arr::unshift($marcas, '', '--Selecione--') , false);?>