web-dev-qa-db-fra.com

CodeIgniter: Créer un nouvel assistant?

J'ai besoin de boucler beaucoup de tableaux de différentes manières et de les afficher dans une page. Les tableaux sont générés par une classe de module. Je sais qu'il vaut mieux ne pas inclure de fonctions dans les "vues" et je veux savoir où insérer le fichier de fonctions.

Je sais que je peux "prolonger" les aides, mais je ne veux pas les aider. Je veux en quelque sorte créer une aide avec mes fonctions de boucle .. Appelons-le loops_helper.php

174
Jonathan

Un assistant CodeIgniter est un fichier PHP avec plusieurs fonctions. Ce n'est pas une classe

Créez un fichier et mettez-y le code suivant.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('test_method'))
{
    function test_method($var = '')
    {
        return $var;
    }   
}

Enregistrez ceci dans application/helpers /. Nous l'appellerons "new_helper.php"

La première ligne existe pour vous assurer que le fichier ne peut pas être inclus et exécuté en dehors de la portée CodeIgniter. Tout ce qui suit est explicite.

Utiliser l'assistant


Cela peut être dans votre contrôleur, modèle ou vue (pas préférable)

$this->load->helper('new_helper');

echo test_method('Hello World');

Si vous utilisez cet assistant dans de nombreux endroits, vous pouvez le charger automatiquement en l'ajoutant au fichier de configuration à chargement automatique, à savoir <your-web-app>\application\config\autoload.php.

$autoload['helper'] = array('new_helper');

-Mathew

366

Un code qui vous permet d’utiliser une instance de CI dans l’assistant:

function yourHelperFunction(){
    $ci=& get_instance();
    $ci->load->database(); 

    $sql = "select * from table"; 
    $query = $ci->db->query($sql);
    $row = $query->result();
}
78
r4ccoon

Eh bien pour moi ne fonctionne que l'ajout du texte "_helper" après dans le fichier php comme:

Codeiginiter Helpers

Et pour charger automatiquement l’assistant dans le dossier application -> fichier autoload.php ajouter dans l’aide du tableau le nom sans "_helper" comme:

$ autoload ['helper'] = array ('comunes');

Et avec ça, je peux utiliser toutes les fonctions de l'aide

17
Eduardo Chavira

Pour créer un nouvel assistant, vous pouvez suivre le instructions de The Pixel Developer , mais mon conseil est de ne pas créer un assistant uniquement pour la logique requise par une partie particulière d'une application particulière. Utilisez plutôt cette logique dans le contrôleur pour définir les tableaux sur leurs valeurs finales prévues. Une fois que vous avez obtenu cela, vous les transmettez à la vue à l'aide de Template Parser Class et (espérons-le), vous pouvez garder la vue vierge de tout ce qui ressemble à PHP à l'aide de variables simples des paires de balises au lieu d’échos et de foreachs. c'est à dire:

{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}

au lieu de

<?php foreach ($blog_entries as $blog_entry): ?>
<h5><?php echo $blog_entry['title']; ?></h5>
<p><?php echo $blog_entry['body']; ?></p>
<?php endforeach; ?>

Un autre avantage de cette approche est que vous n'avez pas à vous inquiéter de l'ajout de l'instance de CI comme vous le feriez si vous utilisiez des aides personnalisées pour effectuer tout le travail.

11
lima

Créez un fichier avec le nom de votre assistant dans / application/helpers et ajoutez-le au fichier de configuration autoload/chargez-le manuellement.

Par exemple. placez un fichier nommé ser_helper.php dans / application/helpers avec ce contenu:

<?php
  function pre($var)
  {
    echo '<pre>';
    if(is_array($var)) {
      print_r($var);
    } else {
      var_dump($var);
    }
    echo '</pre>';
  }
?> 

Vous pouvez maintenant charger l’assistant via $this->load->helper(‘user’); ou l’ajouter à application/config/autoload.php config.

3
Sumit

Pour récupérer un élément de votre fichier de configuration, utilisez la fonction suivante:

$this->config->item('item name'); Où nom d'élément est l'index de tableau $ config que vous voulez récupérer. Par exemple, pour récupérer votre choix de langue, procédez comme suit:

$lang = $this->config->item('language'); La fonction renvoie FALSE (booléen) si l'élément que vous essayez d'extraire n'existe pas.

Si vous utilisez le second paramètre de la fonction $ this-> config-> load pour assigner vos éléments de configuration à un index spécifique, vous pouvez le récupérer en spécifiant le nom de l'index dans le second paramètre de la commande $ this-> config- > fonction item (). Exemple:

// Charge un fichier de configuration nommé blog_settings.php et l'assigne à un index nommé "blog_settings"

$this->config->load('blog_settings', TRUE);

// Récupérer un élément de configuration nommé nom_site contenu dans le tableau blog_settings

$site_name = $this->config->item('site_name', 'blog_settings');

// Une autre façon de spécifier le même élément:

$blog_config = $this->config->item('blog_settings');

$ nom_site = $ blog_config ['nom_site'];

3
user6280268

Il suffit de définir un assistant dans le répertoire des applications, puis d'appeler depuis votre contrôleur le nom de la fonction, comme

helper name = new_helper.php
function test_method($data){
 return $data
}   

dans le contrôleur charger l'assistant

$this->load->new_helper();
$result =  test_method('Hello world!');
if($result){
 echo $result
}

la sortie sera

Hello World!
3
Khurshid Alam Jony