187

我需要以不同的方式循环大量数组并将其显示在页面中。数组由模块类生成。我知道最好不要在“视图”中包含函数,我想知道在哪里插入函数文件。

我知道我可以“扩展”助手,但我不想扩展助手。我想用我的循环函数创建一个助手。让我们称之为 loops_helper.php

4

7 回答 7

391

CodeIgniter 助手是一个具有多个函数的 PHP 文件。这不是一堂课

创建一个文件并将以下代码放入其中。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('test_method'))
{
    function test_method($var = '')
    {
        return $var;
    }   
}

将此保存到application/helpers/。我们称之为“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');

-马修

于 2009-04-29T22:16:24.643 回答
80

一些允许您在帮助程序中使用 CI 实例的代码:

function yourHelperFunction(){
    $ci=& get_instance();
    $ci->load->database(); 

    $sql = "select * from table"; 
    $query = $ci->db->query($sql);
    $row = $query->result();
}
于 2009-05-15T13:44:07.787 回答
18

对我来说,只适用"_helper"于在 php 文件中添加文本,例如:

Codeiginiter 助手

并自动加载文件夹aplication -> 文件 autoload.php中的助手,在数组助手的名称中添加不带“_helper”的名称,如:

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

有了它,我可以使用所有助手的功能

于 2013-05-20T20:32:53.720 回答
11

要创建一个新的助手,您可以按照The Pixel Developer 的说明进行操作,但我的建议是不要仅为特定应用程序的特定部分所需的逻辑创建助手。相反,在控制器中使用该逻辑将数组设置为其最终预期值。一旦你得到它,你就可以使用模板解析器类将它们传递给视图,并且(希望)你可以使用简单的变量或变量标记对而不是 echo 和 foreachs 来保持视图与任何看起来像 PHP 的东西无关。IE:

{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 实例,就像使用自定义帮助程序来完成所有工作一样。

于 2009-04-30T09:51:47.373 回答
3

在/application/helpers中使用您的助手名称创建一个文件,并将其添加到自动加载配置文件/手动加载它。

例如,在/application/helpers中放置一个名为user_helper.php的文件,其中包含以下内容:

<?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配置。

于 2012-11-07T07:57:28.577 回答
3

只需在应用程序助手目录中定义一个助手,然后从您的控制器调用函数名称,如

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!
于 2015-04-17T11:40:27.473 回答
3

要从配置文件中检索项目,请使用以下函数:

$this->config->item('item name'); 其中 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);

// 检索 blog_settings 数组中包含的名为 site_name 的配置项

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

// 另一种指定相同项目的方法:

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

$site_name = $blog_config['site_name'];

于 2016-05-02T08:00:00.997 回答