CodeIgniter: Создать нового помощника?

Мне нужно перебрать множество массивов по-разному и отобразить их на странице. Массивы генерируются классом модуля. Я знаю, что лучше не включать функции в «представления», и я хочу знать, куда вставить файл функций.

Я знаю, что могу «продлить» помощников, но я не хочу распространять помощника. Я хочу создать помощника с моими функциями цикла. Позволяет называть его loops_helper.php

Помощник CodeIgniter – это PHP-файл с несколькими функциями. Это не класс

Создайте файл и вставьте в него следующий код.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); if ( ! function_exists('test_method')) { function test_method($var = '') { return $var; } } 

Сохраните это в приложении / помощниках / . Мы будем называть его «new_helper.php»

Первая строка существует, чтобы убедиться, что файл не может быть включен и запущен извне области CodeIgniter. Все после этого самоочевидно.

Использование помощника


Это может быть в вашем контроллере , модели или представлении (не предпочтительнее)

 $this->load->helper('new_helper'); echo test_method('Hello World'); 

Если вы используете этот помощник во многих местах, вы можете загрузить его автоматически, добавив его в файл конфигурации автозагрузки, то есть <your-web-app>\application\config\autoload.php .

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

-Mathew

Вернулась сюда через некоторое время?

Я просто хочу написать некоторые коды, которые позволяют использовать экземпляр CI внутри помощника

  function yourHelperFunction(){ $ci=& get_instance(); $ci->load->database(); $sql = "select * from table"; $query = $ci->db->query($sql); $row = $query->result(); } 

Ну, только для меня работает только добавление текста "_helper" после в php-файле, например:

Помощники Codeiginiter

А для того, чтобы автоматически загружать помощника в папке aplication -> file autoload.php, добавьте в массив helper имя без "_helper", как:

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

И с этим я могу использовать все вспомогательные функции

Чтобы создать новый помощник, вы можете следовать инструкциям разработчика Pixel , но мой совет – не создавать помощника только для логики, требуемой определенной частью конкретного приложения. Вместо этого используйте эту логику в контроллере, чтобы установить массивы в их конечные предполагаемые значения. Как только вы получили это, вы передаете их в представление с помощью класса Parser шаблона и (надеюсь), вы можете сохранить представление в чистоте от всего, что выглядит как PHP, используя простые переменные или пары пар переменных вместо эхо и foreach. то есть:

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

вместо

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

Еще одно преимущество этого подхода заключается в том, что вам не нужно беспокоиться о добавлении экземпляра CI, как если бы вы использовали пользовательские помощники для выполнения всей работы.

Создайте файл с именем вашего помощника в / application / helpers и добавьте его в файл конфигурации автозагрузки / загрузите его вручную.

Например, разместите файл с именем user_helper.php в / application / helpers с этим контентом:

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

Теперь вы можете загрузить хелпер через $this->load->helper('user'); или добавить его в конфигурацию application / config / autoload.php .

Просто определите помощника в каталоге помощника приложения, затем вызовите с вашего контроллера просто имя функции, например

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

в контроллере загрузите помощника

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

выход будет

 Hello World! 

Чтобы получить элемент из вашего файла конфигурации, используйте следующую функцию:

$this->config->item('item name'); Где имя элемента – это индекс массива $ config, который вы хотите получить. Например, чтобы выбрать язык, вы сделаете следующее:

$lang = $this->config->item('language'); Функция возвращает FALSE (логическая), если элемент, который вы пытаетесь извлечь, не существует.

Если вы используете второй параметр функции $ this-> config-> load, чтобы назначить свои элементы конфигурации конкретному индексу, вы можете получить его, указав имя индекса во втором параметре $ this-> config- > item (). Пример:

// Загружает конфигурационный файл с именем blog_settings.php и присваивает ему индекс с именем "blog_settings"

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

// Получить элемент конфигурации с именем site_name, содержащимся в массиве blog_settings

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

// Альтернативный способ указать один и тот же элемент:

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

$ site_name = $ blog_config ['site_name'];