php - arreglos - CodeIgniter: ¿Crear nuevo ayudante?
libraries codeigniter (7)
Necesito hacer un bucle de muchas matrices de diferentes formas y mostrarlas en una página. Las matrices son generadas por una clase de módulo. Sé que es mejor no incluir funciones en ''vistas'' 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
Bueno, para mí solo funciona agregando el texto "_helper"
después en el archivo php como:
Y para cargar automáticamente el helper en la aplicación de la carpeta -> archivo autoload.php, agregue en la matriz helper el nombre sin "_helper" como:
$ autoload [''helper''] = array (''comunes'');
Y con eso puedo usar todas las funciones de ayudante
Cree un archivo con el nombre de su ayudante en / application / helpers y agréguelo al archivo de configuración de autocarga / cárguelo manualmente.
Por ejemplo, coloque un archivo llamado user_helper.php en / 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 ayudante a través de $this->load->helper(''user'');
o agréguelo a la configuración de la aplicación / config / autoload.php .
Para crear un nuevo ayudante puede seguir las instrucciones de The Pixel Developer , pero mi consejo es no crear un helper solo para la lógica requerida por una parte particular de una aplicación en particular. En su lugar, use esa lógica en el controlador para establecer las matrices en sus valores finales deseados. Una vez que lo tienes, pasas a la vista usando la clase de analizador de plantillas y (con suerte) puedes mantener la vista limpia de todo lo que se parece a PHP usando variables simples o pares de etiquetas variables en lugar de echos y foros. es decir:
{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 utiliza ayudantes personalizados para hacer todo el trabajo.
Para recuperar un elemento de su archivo de configuración, use la siguiente función:
$this->config->item(''item name'');
Donde el nombre del elemento es el índice $ config array que desea recuperar. Por ejemplo, para buscar su elección de idioma, hará esto:
$lang = $this->config->item(''language'');
La función devuelve FALSO (booleano) si el elemento que está intentando recuperar no existe.
Si está utilizando el segundo parámetro de la función $ this-> config-> load para asignar sus elementos de configuración a un índice específico, puede recuperarlo especificando el nombre del índice en el segundo parámetro de $ this-> config- > función 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 denominado nombre_sitio contenido en la matriz blog_settings
$site_name = $this->config->item(''site_name'', ''blog_settings'');
// Una forma alternativa de especificar el mismo artículo:
$blog_config = $this->config->item(''blog_settings'');
$ site_name = $ blog_config [''site_name''];
Regresé aquí después de un tiempo, ¿eh?
Solo quiero escribir algunos códigos que permitan usar la instancia de CI dentro del asistente
function yourHelperFunction(){
$ci=& get_instance();
$ci->load->database();
$sql = "select * from table";
$query = $ci->db->query($sql);
$row = $query->result();
}
Simplemente defina un ayudante en el directorio auxiliar de la aplicación y luego 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 ayudante
$this->load->new_helper();
$result = test_method(''Hello world!'');
if($result){
echo $result
}
salida será
Hello World!
Un CodeIgniter helper es un archivo PHP con múltiples funciones. No es una clase
Crea un archivo y pon 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 pueda incluir y ejecutar desde fuera del alcance de CodeIgniter. Todo después de esto se explica por sí mismo.
Usando el Ayudante
Esto puede estar en su controlador , modelo o vista (no es preferible)
$this->load->helper(''new_helper'');
echo test_method(''Hello World'');
Si usa este asistente en muchas ubicaciones, puede hacer que se cargue automáticamente al agregarlo al archivo de configuración de autocarga, es decir, <your-web-app>/application/config/autoload.php
.
$autoload[''helper''] = array(''new_helper'');
-Mateo