CodeIgniter: créer un nouveau helper?

j'ai besoin de boucler beaucoup de tableaux de différentes façons et l'afficher dans une page. Les tableaux sont générés par une classe de modules. Je sais qu'il est préférable de ne pas inclure de fonctions sur les "vues" et je veux savoir où insérer le fichier de fonctions.

je sais que je peux 'étendre' les assistants, mais je ne veux pas étendre un assistant. Je veux créer un helper avec ma boucle fonctions.. Appelons-le loops_helper.php

162
demandé sur Kuf 2009-04-30 01:41:29

7 réponses

un helper CodeIgniter est un fichier PHP avec plusieurs fonctions. il ne s'agit pas d'une classe

créer un fichier et y mettre le code suivant.

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

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

Enregistrer application/helpers/ . Nous l'appellerons "new_helper.php "

la première ligne existe pour s'assurer que le fichier ne peut pas être inclus et exécuté à partir de l'extérieur de la portée CodeIgniter. Après tout c'est auto-explicatif.

à l'Aide de l'assistant


cela peut être dans votre contrôleur , modèle ou voir (Non préférable)

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

echo test_method('Hello World');

si vous utilisez cet helper dans de nombreux endroits, vous pouvez le charger automatiquement en l'ajoutant au fichier de configuration de autoload, c'est-à-dire <your-web-app>\application\config\autoload.php .

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

- Mathew

345
répondu The Pixel Developer 2015-11-25 02:15:42

un code qui vous permet D'utiliser l'instance CI à l'intérieur de l'Assistant:

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

    $sql = "select * from table"; 
    $query = $ci->db->query($sql);
    $row = $query->result();
}
72
répondu r4ccoon 2018-08-12 01:18:59

Eh bien pour moi ne fonctionne ajouter le texte "_helper" après dans le fichier php comme:

Codeiginiter Helpers

et de charger automatiquement l'assistant dans le dossier application -> file autoload.php ajoute dans le tableau helper le nom sans" _helper "comme:

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

et avec cela je peux utiliser tout l'aide de fonctions

14
répondu Eduardo Chavira 2015-05-02 10:56:36

pour créer un nouveau helper vous pouvez suivre les instructions du développeur de pixels , mais mon conseil n'est pas de créer un helper juste pour la logique requise par une partie particulière d'une application particulière. Au lieu de cela, utilisez cette logique dans le controller pour définir les tableaux à leurs valeurs finales prévues. Une fois que vous avez cela, vous les passer à la vue en utilisant le Template Parser Class et (espérons) vous pouvez garder la vue propre de tout ce qui ressemble à PHP en utilisant des variables simples ou des paires d'étiquettes variables au lieu d'echos et foreachs. j'.e:

{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 soucier d'ajouter L'instance CI comme vous le feriez si vous utilisez des helpers personnalisés pour faire tout le travail.

10
répondu lima 2017-05-23 12:34:39

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

E. G. placez un fichier appelé user_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>';
  }
?> 

Maintenant, vous pouvez soit charger l'Assistant via $this->load->helper(‘user’); ou l'ajouter à application/config/autoload.php config.

3
répondu Sumit 2015-05-02 10:57:32

il suffit de définir un helper dans application helper directory puis appelez de votre contrôleur juste le nom de la fonction comme

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

dans le contrôleur charger le helper

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

sortie sera

Hello World!
3
répondu Khurshid Alam Jony 2016-04-11 06:18:15

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

$this->config->item('item name'); Où le nom de l'élément est l'index $ config array que vous voulez récupérer. Par exemple, pour récupérer votre choix de langue vous allez faire ceci:

$lang = $this->config->item('language'); La fonction retourne FALSE (booléen) si l'élément que vous essayez de récupérer n'existe pas.

si vous utilisez le second paramètre de la fonction $ this - > config - >load pour assignez vos éléments de configuration à un index spécifique que vous pouvez récupérer en spécifiant le nom de l'index dans le second paramètre de la fonction $this->config->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é site_name 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 article:

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

$nom_site = $blog_config['site_name'];

2
répondu user6280268 2016-05-02 08:00:00