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 файле, например:

Codeiginiter Helpers

И для автоматической загрузки помощника в папке 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'];