CodeIgniter: ¿Crear un nuevo ayudante?


Necesito hacer un bucle de muchas matrices de diferentes maneras y mostrarlas en una página. Los arrays son generados por una clase module. Sé que es mejor no incluir funciones en 'views' y quiero saber dónde insertar el archivo de funciones.

Sé que puedo 'extender' los ayudantes, pero no quiero extender un ayudante. Quiero crear un ayudante con mis funciones de bucle.. Vamos a llamarlo loops_helper.php

Author: Kuf, 2009-04-30

7 answers

Un helper CodeIgniter es un archivo PHP con múltiples funciones. No es una clase

Cree un archivo y ponga el siguiente código en él.

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

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

Guarde esto en application/helpers/ . Lo llamaremos "new_helper".php"

La primera línea existe para asegurarse de que el archivo no se puede incluir y ejecutar desde fuera del ámbito CodeIgniter. Todo después de esto se explica por sí mismo.

Usando el Helper


Esto puede estar en su controlador, modelo o ver (no se recomienda)

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

echo test_method('Hello World');

Si usa este helper en muchas ubicaciones, puede hacer que se cargue automáticamente agregándolo al archivo de configuración de carga automática, es decir, <your-web-app>\application\config\autoload.php.

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

-Mathew

 345
Author: The Pixel Developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-25 02:15:42

Algún código que le permite usar la instancia CI dentro del helper:

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

    $sql = "select * from table"; 
    $query = $ci->db->query($sql);
    $row = $query->result();
}
 72
Author: r4ccoon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-12 01:18:59

Bueno para mí solo funciona añadiendo el texto "_helper" después en el archivo php como:

Ayudantes de Codeiginiter

Y cargar automáticamente el helper en la carpeta aplication -> file autoload.php añade en el array helper el nombre sin "_helper"como:

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

Y con eso puedo usar todas las funciones del ayudante

 14
Author: Eduardo Chavira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-02 10:56:36

Para crear un nuevo helper puede seguir las instrucciones del Desarrollador de Píxeles, pero mi consejo no es crear un helper solo para la lógica requerida por una parte en particular de una aplicación en particular. En su lugar, utilice esa lógica en el controlador para establecer los arrays a sus valores finales previstos. Una vez que obtengas eso, los pasas a la vista usando la Clase de Analizador de plantillas y (con suerte) puedes mantener la vista limpia de cualquier cosa que se parezca a PHP usando variables simples o pares de etiquetas variables en lugar de ecos y foreachs. i. e:

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

En lugar de

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

Otro beneficio de este enfoque es que no tiene que preocuparse por agregar la instancia de CI como lo haría si usa ayudantes personalizados para hacer todo el trabajo.

 10
Author: lima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:39

Crea un archivo con el nombre de tu helper en /application/helpers y añádelo al archivo de configuración autoload/cárgalo manualmente.

Por ejemplo, coloque un archivo llamado user_helper. php in /application / helpers con este contenido:

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

Ahora puede cargar el helper a través de $this->load->helper(‘user’); o agregarlo a application/config/autoload.php config.

 3
Author: Sumit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-02 10:57:32

Simplemente defina un ayudante en el directorio de ayudantes de aplicaciones a continuación, llame desde su controlador solo nombre de la función como

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

En el controlador cargar el helper

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

La salida será

Hello World!
 3
Author: Khurshid Alam Jony,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-11 06:18:15

Para recuperar un elemento de su archivo de configuración, utilice la siguiente función:

$this->config->item('item name'); Donde el nombre del elemento es el índice de matriz conf config que desea recuperar. Por ejemplo, para obtener su elección de idioma, hará lo siguiente:

$lang = $this->config->item('language'); La función devuelve FALSE (booleano) si el elemento que está intentando recuperar no existe.

Si está utilizando el segundo parámetro de la función load this->config->load para asignar sus elementos de configuración a un índice específico, puede recuperarlo mediante especificar el nombre del índice en el segundo parámetro de la función item this->config->item (). Ejemplo:

// Carga un archivo de configuración llamado blog_settings.php y lo asigna a un índice llamado"blog_settings"

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

/ / Recuperar un elemento de configuración llamado site_name contenido dentro del array blog_settings

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

/ / Una forma alternativa de especificar el mismo elemento:

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

$site_name = $blog_config['site_name'];

 2
Author: user6280268,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-02 08:00:00