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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CodeIgniter

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

Q&A

解決済

1回答

4999閲覧

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

ssmxgo

総合スコア178

CodeIgniter

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

0グッド

2クリップ

投稿2015/11/05 02:16

編集2015/11/05 02:29

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

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

php

1function explanation($cond){ 2 switch($cond){ 3 case 'A'; 4 Aの長文説明 5 break; 6 case 'B'; 7 Bの長文説明... 8 break; 9 case 'C'; 10 ... 11 break; 12 ..... 13 14 } 15}

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

みなさんはこのようなコードの場合、どのように記述しますか?
優しく、優しくご教授くださいませ。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHP やcodeigniter は詳しくわかりませんが:

  • 設定を保存するメソッドを利用して、そちらにハッシュ値(Key : Value セット)を設定
  • 設定読み出しメソッドを呼んで 直接キー値を指定

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

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

プロジェクトの作成

bash

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

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

application/config/my_config.php :

php

1<?php 2$config['my_test_values'] = array( 3 'key1' => 'value1', 4 'key2' => 'value2', 5 'key3' => 'value3', 6 'key4' => 'value4' 7);

ヘルパーの作成

application/helpers/message_helper.php :

php

1<?php 2if (!defined('BASEPATH')) exit('No direct script access allowed'); 3 4if (!function_exists('test_method')) { 5 function test_method($key = '') 6 { 7 $ci =& get_instance(); 8 $ci->config->load('my_config'); // Load application/config/my_config.php 9 10 $value = $ci->config->item('my_test_values'); // Get my_test_values configuration value 11 12 return $value[$key]; 13 } 14}

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

application/controllers/Welcome.php :

php

1<?php 2class Welcome extends CI_Controller 3{ 4 public function index() 5 { 6 $this->load->helper('message'); // Load application/helpers/message_helper.php 7 8 $data = array( 9 'myvalue' => 'key1' 10 ); 11 $this->load->view('welcome_message', $data); 12 } 13}

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

application/views/welcome_message.php :

php

1<h1><?php echo $myvalue // => 'key1' ?></h1> 2<h2><?php echo test_method($myvalue) // => 'value1' ?></h2>

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

Links

投稿2015/11/05 04:26

編集2015/11/06 17:39
gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2015/11/05 13:43

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

2015/11/05 19:27

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

2015/11/06 01:08 編集

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

2015/11/06 06:35

おおおおおおおお…、ナルホドこうやって書くのかぁ(汗) Codeigniter触れたことがないのに凄いとしかいえません。 自分の知識の無さ、スキルの無さに愕然とします。 ひとつだけ腑に落ちないというかわからないところがあるのですが、helperに定義された関数をなぜControllerからでは無くてView側から呼び出したのでしょうか? ※本題からズレた質問ですのであしからず…、お答えしなくても構いませんm(_ _)m
gouf

2015/11/06 17:35 編集

あとに書くとおり、その、なんとなく、そう使うのかな程度の認識です... --- コントローラでもヘルパーメソッドを利用できたのですね、それは試してなくて気づきませんでした 確かにビューの呼び出しのときに渡す変数、そのなかに詰め込んでしまえばなにも変わりはないかもしれません 今回の場合は、表示のための機能なので、ビューで使うのが適切ではないかと思い、コントローラでは読み込みだけに留め、利用しませんでした * [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)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問