web-dev-qa-db-ja.com

CodeIgniter:新しいヘルパーを作成しますか?

多くの配列をさまざまな方法でループして、ページに表示する必要があります。配列はモジュールクラスによって生成されます。 「ビュー」に関数を含めない方が良いことを知っています。関数ファイルを挿入する場所を知りたいです。

ヘルパーを「拡張」できることは知っていますが、ヘルパーを拡張したくありません。ループ関数でヘルパーを作成したいのですが、loops_helper.phpと呼びましょう

174
Jonathan

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スコープ外からインクルードして実行できないようにするために存在します。これ以降はすべて自明です。

ヘルパーを使用する


これはcontrollermodelまたはview(好ましくない)

$this->load->helper('new_helper');

echo test_method('Hello World');

このヘルパーを多くの場所で使用する場合は、自動読み込み構成ファイルに追加することで自動的に読み込むことができます。つまり、<your-web-app>\application\config\autoload.phpです。

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

-マシュー

366

ヘルパー内でCIインスタンスを使用できるようにするコード:

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

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

私にとっては、次のようなテキスト"_helper"をphpファイルに追加するだけです。

Codeiginiter Helpers

そして、フォルダーにヘルパーを自動的にロードするにはaplication-> file autoload.php「_helper」なしで名前を配列ヘルパーに追加します。

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

そしてそれで私はすべてのヘルパーの機能を使用できます

17
Eduardo Chavira

新しいヘルパーを作成するには、 Pixel Developerからの指示 に従いますが、私のアドバイスは、特定のアプリケーションの特定の部分に必要なロジックのためだけにヘルパーを作成することではありません。代わりに、コントローラーでそのロジックを使用して、配列を最終的な目的の値に設定します。それが得られたら、 Template Parser Class を使用してビューに渡します。(できれば)単純な変数または変数を使用してPHPのようなものからビューをクリーンに保つことができますエコーと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; ?>

このアプローチのもう1つの利点は、カスタムヘルパーを使用してすべての作業を行う場合のように、CIインスタンスの追加について心配する必要がないことです。

11
lima

/ application/helpersにヘルパーの名前でファイルを作成し、autoload configファイルに追加するか、手動でロードします。

例えば。 ser_helper.phpというファイルを/ application/helpersにこのコンテンツとともに配置します:

<?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 configに追加できます。

3
Sumit

構成ファイルからアイテムを取得するには、次の関数を使用します。

$this->config->item('item name');ここで、アイテム名は取得する$ config配列インデックスです。たとえば、言語の選択を取得するには、次のようにします。

$lang = $this->config->item('language');フェッチしようとしているアイテムが存在しない場合、関数はFALSE(ブール値)を返します。

特定のインデックスに構成アイテムを割り当てるために$ this-> config-> load関数の2番目のパラメーターを使用している場合は、$ this-> config-の2番目のパラメーターでインデックス名を指定することで取得できます。 > 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'];

3
user6280268

アプリケーションヘルパーディレクトリでヘルパーを定義し、コントローラーから次のような関数名を呼び出すだけです。

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