CodeIgniter: Создать нового помощника?
Мне нужно перебрать множество массивов по-разному и отобразить их на странице. Массивы генерируются классом модуля. Я знаю, что лучше не включать функции в "представления", и я хочу знать, где вставить файл функций.
Я знаю, что могу "продлить" помощников, но я не хочу распространять помощника. Я хочу создать помощник с моими функциями цикла. Позволяет называть его loops_helper.php
Ответы
Ответ 1
Помощник 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
Ответ 2
Получилось здесь через некоторое время, а?
Я просто хочу написать некоторые коды, которые позволяют использовать экземпляр CI внутри помощника
function yourHelperFunction(){
$ci=& get_instance();
$ci->load->database();
$sql = "select * from table";
$query = $ci->db->query($sql);
$row = $query->result();
}
Ответ 3
Хорошо для меня работает только добавление текста "_helper"
после в php файле, например:
И для автоматической загрузки помощника в папке aplication → file autoload.php добавьте в помощник массива имя без "_helper", например:
$autoload ['helper'] = array ('comunes');
И с этим я могу использовать все вспомогательные функции
Ответ 4
Чтобы создать нового помощника, вы можете следовать инструкциям от разработчика Pixel, но мой совет - не создавать помощника только для логики, требуемой определенной частью конкретного приложения. Вместо этого используйте эту логику в контроллере, чтобы установить массивы в их конечные предполагаемые значения. После того, как вы это получили, вы передаете их в представление с помощью Template Parser Class и (надеюсь), вы можете сохранить представление в чистоте от всего, что выглядит как 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, как если бы вы использовали пользовательские помощники для выполнения всей работы.
Ответ 5
Создайте файл с именем вашего помощника в /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.
Ответ 6
Просто определите вспомогательный помощник в каталоге помощника приложения
затем вызовите с вашего контроллера просто имя функции, например
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!
Ответ 7
Чтобы извлечь элемент из файла конфигурации, используйте следующую функцию:
$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'];