多くの配列をさまざまな方法でループし、ページに表示する必要があります。配列はモジュールクラスによって生成されます。「ビュー」に関数を含めない方がよいことはわかっています。関数ファイルを挿入する場所を知りたいです。
ヘルパーを「拡張」できることはわかっていますが、ヘルパーを拡張したくありません。ループ関数を使ってヘルパーを作成したいのですが、loops_helper.phpという名前にしましょう
多くの配列をさまざまな方法でループし、ページに表示する必要があります。配列はモジュールクラスによって生成されます。「ビュー」に関数を含めない方がよいことはわかっています。関数ファイルを挿入する場所を知りたいです。
ヘルパーを「拡張」できることはわかっていますが、ヘルパーを拡張したくありません。ループ関数を使ってヘルパーを作成したいのですが、loops_helper.phpという名前にしましょう
回答:
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');
-マシュー
$this
てそのプロパティとして設定することで、ヘルパーをCIインスタンスにロードできます。もちろん、必要な場合はすべて。
cool_helper
)可能性があり、それを忘れて$this->load->helper('cool_helper')
自動ロードされた後に手動で呼び出すと、「定義済み」のPHPエラーなどが表示されます。これにより、同じコードを2回ロードすることが防止されます(これはinclude_once()
PHP関数のようなものですが、CodeIgniterヘルパーが問題を回避するためです)。基本的に、少し翻訳します。関数が存在しない場合は、ヘルパーが以前にロードされていなかったことを意味します。それを定義しましょう。
ヘルパー内でCIインスタンスを使用できるようにするいくつかのコード:
function yourHelperFunction(){
$ci=& get_instance();
$ci->load->database();
$sql = "select * from table";
$query = $ci->db->query($sql);
$row = $query->result();
}
まあ私にとって"_helper"
は、次のようなphpファイルの後にテキストを追加するだけで機能します:
そして、ヘルパーをフォルダーaplication->ファイルautoload.phpに自動的にロードするには、配列ヘルパーの名前に「_helper」なしの名前を追加します。
$ autoload ['helper'] = array( 'comunes');
これで、ヘルパーのすべての機能を使用できます
_helper
ファイル名の最後に要求することを発見しました。
新しいヘルパーを作成するには、Pixel Developerの指示に従いますが、私のアドバイスは、特定のアプリケーションの特定の部分で必要なロジックのためだけにヘルパーを作成することではありません。代わりに、コントローラーでそのロジックを使用して、配列を最終的な目的の値に設定します。これを取得したら、テンプレートパーサークラスを使用してビューに渡します。(できれば)エコーや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; ?>
このアプローチのもう1つの利点は、カスタムヘルパーを使用してすべての作業を行う場合のように、CIインスタンスの追加について心配する必要がないことです。
/ application / helpersにヘルパーの名前のファイルを作成し、それをautoload構成ファイルに追加して、手動でロードします。
たとえば、user_helper.phpというファイルを/ application / helpersに次の内容で配置します。
<?php
function pre($var)
{
echo '<pre>';
if(is_array($var)) {
print_r($var);
} else {
var_dump($var);
}
echo '</pre>';
}
?>
これで、ヘルパーを読み込むか、application / config / autoload.php configに$this->load->helper(‘user’);
追加できます。
アプリケーションヘルパーディレクトリでヘルパーを定義し、コントローラーから関数名を呼び出すだけです。
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!
構成ファイルからアイテムを取得するには、次の関数を使用します。
$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'];