質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • CodeIgniter

    290questions

    CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Codeigniterにて、定型文はどこに書き、どのように呼び出すのか?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 2,547

ssmxgo

score 154

ものすごい素人質問ですので、お許しを & お手柔らかにm(_ _;)m

条件A,B,C..... により、各説明文が表示される、このロジックを一つの関数とします。

function explanation($cond){
 switch($cond){
  case 'A';
  Aの長文説明
  break;
  case 'B';
  Bの長文説明...
  break;
  case 'C';
  ...
  break;
  .....

 }
}

これをcontroller各所から呼び出すためにはHelperに書くのが打倒だと考えています。
が、この条件や説明文が状況によって変更がかかることが多く、これはConfigの設定側に書くのが打倒かな?とも思ったりします。
(Helperの中に汎用性のある定数?を書くのに罪悪感…というか、コードに設定部分が埋もれてしまうのではないか?という…)

みなさんはこのようなコードの場合、どのように記述しますか?
優しく、優しくご教授くださいませ。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

PHP やcodeigniter は詳しくわかりませんが: 
* 設定を保存するメソッドを利用して、そちらにハッシュ値(Key : Value セット)を設定 
* 設定読み出しメソッドを呼んで 直接キー値を指定 

できれば、explanation 関数もスッキリ書けるのではないでしょうか 

実際にプロジェクトを作成し、コードを書いてみました:

# プロジェクトの作成

mkdir codeigniter
cd codeigniter
php composer.phar create-project bcit-ci/CodeIgniter .

# 設定ファイルの作成と値の設定

application/config/my_config.php :

<?php
$config['my_test_values'] = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3',
    'key4' => 'value4'
);

# ヘルパーの作成

application/helpers/message_helper.php :
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');

if (!function_exists('test_method')) {
    function test_method($key = '')
    {
        $ci =& get_instance();
        $ci->config->load('my_config'); // Load application/config/my_config.php

        $value = $ci->config->item('my_test_values'); // Get my_test_values configuration value

        return $value[$key];
    }
}

# コントローラでヘルパーの読み込み

application/controllers/Welcome.php :
<?php
class Welcome extends CI_Controller
{
    public function index()
    {
        $this->load->helper('message'); // Load application/helpers/message_helper.php

        $data = array(
            'myvalue' => 'key1'
        );
        $this->load->view('welcome_message', $data);
    }
}

# ビューでヘルパーメソッドを呼び出して返り値を表示

application/views/welcome_message.php :
<h1><?php echo $myvalue // => 'key1' ?></h1>
<h2><?php echo test_method($myvalue) // => 'value1' ?></h2>

調べた情報を頼りに書いてみましたが、何か参考になれば幸いです

# Links

Config Class — CodeIgniter 3.0.3 documentation
php - Access database config variables from a helper in Codeigniter - Stack Overflow
php - CodeIgniter: Create new helper? - Stack Overflow
php - Passing variable from controller to view in CodeIgniter - Stack Overflow

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/05 22:43

    早速のお返事ありがとうございます。設定を保存するメソッド…URL先を参照して試して、明日(最悪、後日)お返事させていただきます。

    キャンセル

  • 2015/11/06 04:27

    (回答内容をほぼ全面的に書き換えました)

    キャンセル

  • 2015/11/06 10:07 編集

    懇切ご丁寧にありがとうございます!!!!!!!
    本日試してみますm(_ _)mm(_ _)mm(_ _)m

    キャンセル

  • 2015/11/06 15:35

    おおおおおおおお…、ナルホドこうやって書くのかぁ(汗)
    Codeigniter触れたことがないのに凄いとしかいえません。
    自分の知識の無さ、スキルの無さに愕然とします。

    ひとつだけ腑に落ちないというかわからないところがあるのですが、helperに定義された関数をなぜControllerからでは無くてView側から呼び出したのでしょうか?
    ※本題からズレた質問ですのであしからず…、お答えしなくても構いませんm(_ _)m

    キャンセル

  • 2015/11/07 02:22 編集

    あとに書くとおり、その、なんとなく、そう使うのかな程度の認識です...

    ---

    コントローラでもヘルパーメソッドを利用できたのですね、それは試してなくて気づきませんでした

    確かにビューの呼び出しのときに渡す変数、そのなかに詰め込んでしまえばなにも変わりはないかもしれません

    今回の場合は、表示のための機能なので、ビューで使うのが適切ではないかと思い、コントローラでは読み込みだけに留め、利用しませんでした

    * [Helpers — CodeIgniter 3.0.3 documentation](https://codeigniter.com/user_guide/helpers/index.html)
    * [Helper Functions — CodeIgniter 3.0.3 documentation](https://www.codeigniter.com/userguide3/general/helpers.html)

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • CodeIgniter

    290questions

    CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。