2009-04-29 84 views
147

我需要以不同的方式循环很多数组,并将其显示在页面中。数组由模块类生成。我知道最好不要在'views'中包含函数,而且我想知道在哪里插入函数文件。CodeIgniter:创建新的帮手?

我知道我可以'延长'帮手,但我不想延长帮手。我想创建一个帮助我的循环函数..让我们叫它loops_helper.php

+0

为什么你不能只是通过这些阵列的看法? – 2009-04-29 22:07:44

+0

我可以,但是错过了从函数中剔除视图的问题。 – Jonathan 2009-04-29 22:37:32

回答

322

一个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

+21

请务必使用帮助程序文件名称附加“_helper”,否则会出现错误。所以“helper_name”将无法正常工作,但将您的文件命名为“name_helper”。 – 2012-12-11 10:06:46

+3

从CI2开始,您还需要获取CI实例才能在模型中使用助手:$ ci = get_instance(); $ CI->负载>帮手(” name_helper”); – Evernoob 2013-04-24 09:36:42

8

要创建一个新的助手,你可以按照instructions from The Pixel Developer,但我的建议是不要创建一个帮助只是由特定应用程序的特定部分所需的逻辑。相反,请使用控制器中的逻辑来将阵列设置为最终的预期值。一旦你得到了这些,你可以使用Template Parser Class将它们传递给视图,并且(希望)可以使用简单变量或变量标签对而不是回声和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实例。

69

过了一段时间才回到这里吗?

我只想写一些代码,允许使用CI实例助手

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

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

里面/应用程序创建你的助手的名称的文件/佣工,并把它添加到自动加载配置文件/手动加载它。

E.g.放置一个名为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配置。

13

好吧,我只能在php文件中添加文本"_helper"后,如:

Codeiginiter Helpers

并以文件夹aplication自动加载帮手 - >文件autoload.php添加在array helper的名字没有“_helper”就像:

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

有了这样我可以使用所有辅助的功能

1

只要定义在应用助手目录 一个助手,那么从您的控制器调用只是函数名状

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! 
1

从您的配置文件中检索项目,使用以下功能:

$this->config->item('item name'); 其中项目名称是要检索的$配置数组索引。例如,为了获取你的语言选择,你会做这样的:

$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'];