CodeIgniter:创建新助手?

时间:2009-04-29 21:41:29

标签: php codeigniter codeigniter-helpers

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

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

6 个答案:

答案 0 :(得分:364)

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');

-Mathew

答案 1 :(得分:78)

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

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

    $sql = "select * from table"; 
    $query = $ci->db->query($sql);
    $row = $query->result();
}

答案 2 :(得分:17)

对我来说,只能在php文件中添加文本"_helper",如:

Codeiginiter Helpers

并自动加载文件夹 aplication - &gt;中的帮助程序文件autoload.php 在数组助手中添加没有“_helper”的名称,如:

  

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

由此我可以使用所有助手的功能

答案 3 :(得分:11)

要创建一个新助手,您可以遵循instructions from The Pixel Developer,但我的建议不是仅为特定应用程序的特定部分所需的逻辑创建帮助器。相反,在控制器中使用该逻辑将数组设置为其最终预期值。完成之后,使用Template Parser Class将它们传递给视图,并且(希望)您可以使用简单变量或变量标记对而不是echos和foreach来保持视图清晰,看起来像PHP。即:

{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实例。

答案 4 :(得分: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!

答案 5 :(得分:3)

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

$this->config->item('item name'); 其中item name是您要检索的$ config数组索引。例如,要获取您的语言选择,您将执行以下操作:

$lang = $this->config->item('language'); 如果您尝试获取的项目不存在,则该函数返回FALSE(布尔值)。

如果您使用$ this-&gt; config-&gt;加载函数的第二个参数,以便将配置项分配给特定索引,则可以通过在$的第二个参数中指定索引名称来检索它。 this-&gt; config-&gt; 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'];