2009-04-29 57 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'];