CodeIgniter: создать новый помощник?
Мне нужно по-разному зацикливать множество массивов и отображать их на странице. Массивы генерируются классом модуля. Я знаю, что лучше не включать функции в "представления", и я хочу знать, куда вставить файл функций.
Я знаю, что могу "расширить" помощников, но я не хочу расширять помощников. Я хочу создать помощника с помощью моих функций цикла. Давайте назовем его loops_helper.php
7 ответов
Помощник 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, как:
А для автоматической загрузки помощника в папку aplication -> файл autoload.php добавьте в массив имя помощника без "_helper", например:
$ autoload ['helper'] = array ('comunes');
И с этим я могу использовать все функции помощника
Чтобы создать нового помощника, вы можете следовать инструкциям The Pixel Developer, но я советую не создавать помощника только для логики, требуемой определенной частью конкретного приложения. Вместо этого используйте эту логику в контроллере, чтобы установить для массивов их окончательные предполагаемые значения. Получив это, вы передаете их в представление с помощью класса Template Parser и (надеюсь) вы можете сохранить представление чистым от всего, что выглядит как PHP, используя простые переменные или пары переменных тегов вместо echos и foreachs. то есть:
{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’);
или добавьте его в config приложения / config / autoload.php.
Чтобы получить элемент из вашего конфигурационного файла, используйте следующую функцию:
$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'];
Просто определите помощника в каталоге помощника приложения, затем вызовите из вашего контроллера просто имя функции, как
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!