codeigniter: создать новый помощник?

<p>мне нужно по-разному зацикливать множество массивов и отображать их на странице. массивы генерируются классом модуля. я знаю, что лучше не включать функции в "представления", и я хочу знать, куда вставить файл функций.</p><p>я знаю, что могу "продлить" помощников, но я не хочу расширять помощника. я хочу создать помощника с помощью моих функций цикла. давайте назовем его loops\_helper.php</p>

<p>помощник codeigniter - это файл php с несколькими функциями. <em> это не класс </em></p><p>создайте файл и вставьте в него следующий код.</p><pre><code><?php if ( ! defined('basepath')) exit('no direct script access allowed'); if ( ! function\_exists('test\_method')) { function test\_method($var = '') { return $var; } } </code></pre><p>сохраните это в <strong>application/helpers /</strong>. мы будем называть это "new\_helper.php"</p><p>первая строка существует, чтобы убедиться, что файл не может быть включен и запущен за пределами области действия codeigniter. все после этого говорит само за себя.</p><h1>использование помощника</h1><hr><p>это может быть в вашем <strong>контроллер</strong>, <strong>модель</strong> или <strong>просмотр</strong> (не предпочтительно)</p><pre><code>$this->load->helper('new_helper'); echo test_method('hello world'); если вы используете этот помощник во многих местах, вы можете загрузить его автоматически, добавив его в файл конфигурации автозагрузки, т.е. <your-web-app>applicationconfigautoload.php.$autoload['helper'] = array('new\_helper'); </code></pre><p>-mathew</p>

<p>некоторый код, который позволяет вам использовать экземпляр ci внутри помощника:</p><pre><code>function yourhelperfunction(){ $ci=& get_instance(); $ci->load->database(); $sql = "select  from table"; $query = $ci->db->query($sql); $row = $query->result(); } </code></pre>

<p>ну, для меня работает только добавление текста <code>"\_helper"</code> после в файл php, например:</p><p><img src="https://i.stack.imgur.com/02bqc.png" alt="codeiginiter helpers"></p><p>и чтобы автоматически загрузить помощника в папку <strong>aplication -> file autoload.php</strong> добавить в массив имя помощника без "\_helper", например:</p><blockquote> <p>$ autoload ['helper'] = array ('comunes'); </blockquote>и с этим я могу использовать все функции помощника

чтобы создать нового помощника, вы можете следовать <a href="https://stackoverflow.com/questions/804399/codeigniter-create-new-helper/804520#804520">инструкциям от pixel developer , но мой совет - не создавать помощника только для логики, требуемой определенной частью конкретного приложения. вместо этого используйте эту логику в контроллере, чтобы установить для массивов их окончательные предполагаемые значения. получив это, вы передаете их в представление с помощью <a href="http://ellislab.com/codeigniter/user-guide/libraries/parser.html">template parser class и (надеюсь) вы можете сохранить представление чистым от всего, что выглядит как php, используя простые переменные или переменные теги пары вместо эха и foreachs. то есть:{blog_entries} {title} {body} {/blog_entries} вместо<?php foreach ($blog\_entries as $blog_entry): ?> <?php echo $blog\_entry['title']; ?></h5> <p><?php echo $blog_entry['body']; ?> <?php endforeach; ?> еще одним преимуществом этого подхода является то, что вам не нужно беспокоиться о добавлении экземпляра ci, как если бы вы использовали пользовательские помощники для выполнения всей работы.

создайте файл с именем вашего помощника в <strong>/ application/helpers</strong> и добавьте его в файл конфигурации автозагрузки/загрузите его вручную.например. поместите файл с именем <strong>ser_helper.php</strong> в <strong>/ application/helpers</strong> с таким содержимым:<?php function pre($var) { echo '<pre>'; if(is\_array($var)) { print_r($var); } else { var\_dump($var); } echo ''; } ?> теперь вы можете загрузить помощника через $this->load->helper(‘user’);</code> или добавить его в <strong>application/config/autoload.php</strong> config.</p>

<p>чтобы получить элемент из вашего конфигурационного файла, используйте следующую функцию:</p><p><code>$this->config->item('item name'); где имя элемента - это индекс массива $ config, который вы хотите получить. например, чтобы выбрать язык, вы сделаете это:</p><p><code>$lang = $this->config->item('language');</code> функция возвращает false (логическое значение), если элемент, который вы пытаетесь получить, не существует.</p><p>если вы используете второй параметр функции $ this-> config-> load для назначения элементов конфигурации определенному индексу, вы можете получить его, указав имя индекса во втором параметре $ this-> config- > функция item (). пример:</p><p>// загружает файл конфигурации с именем blog\_settings.php и назначает его индексу с именем blog\_settings</p><pre><code>$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 } </code></pre><p>результат будет</p><pre><code>hello world! </code></pre>