1

私はCodeigniterの初心者です。 私のデータベースには、タイトル、マネーユニット、ライセンスキーなどのカラムを持つ 'sysConfig'というテーブルがあります。データベースからグローバル変数でユーザ設定を取得

すべてのビューで使用できる '$ Config'というグローバル変数にこのテーブルレコードの最初の行(レコードは1つしかありません)を取得したいと考えています(モデルとコントローラで使用可能だった場合)。

編集: 私はデータベースから任意のデータを選択することができますが、この問題はありません。 $ Configという変数でテーブルsysConfigのデータを選択し、または<?php echo $Config -> Title; ?>のように直接アクセスしたいと思います。

+1

質問をする前に、文書をお読みください。たとえば、あなたはこれを介して行くことができますhttp://www.codeigniter.com/userguide3/database/results.html –

+0

@ sayantan-das私はデータベースから任意のデータを選択することができますが、私はこれで何の問題もありません。テーブル$ sysConfig上のデータを$ Configという変数で選択し、直接アクセスします。 – 56356356356

+0

次にヘルパーファイルを追加して、getConfig( 'config_name_here') 'のようなヘルパーに関数を書くと、リクエストされた設定値を取得できます。カスタムヘルパーをオートロードすると、そのヘルパー内のすべての関数が利用可能になりますあなたのプロジェクト全体を通して。 <?= getConfig( 'config_name')?> –

答えて

0

これがシステム設定項目である場合、これを行う最良の方法は、自分の設定ファイルにそれらをロードすることです。

独自の設定ファイルを作成します。手動でロードするか、または自動ロードします。あなたがドキュメントにここでそれについて読むことができます

$this->config->set_item('item_name', 'item_value'); 

:この

$this->config->item('item_name'); 

のようなそれで

$this->config->load('filename'); 

アクセスアイテムはまたdynamicallly、これを使用して設定項目を設定することができますhttp://www.codeigniter.com/user_guide/libraries/config.html

これがユーザーベースの場合は、情報をcそのセッションにアクセスしてアクセスしてください。モデルやライブラリのセッション変数にアクセスすることは良い考えではありません。関数引数として必要な項目を渡す必要があります。

+0

ご返信ありがとうございます。このアイテムをデータベースからロードするにはどうしたらいいですか?各ユーザーには独自の設定があるため、ファイルに保存することはできません。 – 56356356356

+0

ユーザーを認証したら、セッション変数にユーザーを設定するだけで、セッションが残っている限り、そのデータにアクセスできます。 $ _SESSION ['license'] = $ license、$ _SESSION ['something_else'] = $ something_elseなど、ログイン時にこれを行うことができます。セッションを保存するためにDBを使用することをお勧めします。格納されると、セッション変数$ _SESSION ['license']にいつでも直接アクセスできます。 – PaulD

+0

個人的には、私はuser_idを取得し、次にライセンスなどのためにuser_idによってテーブルをチェックし、そのデータをコントローラに返す許可手続き(このユーザはログインしている)内でライブラリ呼び出しを設定します。コントローラは、それから必要な情報(もしあれば)を引数としてモデルやライブラリに送ります。私は、セッション中の変数やモデル自体の中のどこかの変数をチェックしません。このように、システムが変更された場合は、複数の場所で複数の機能を変更するのではなく、1つの場所を変更するだけで済みます。 – PaulD

0

1つの方法は、sysConfigデータを必要とする任意のコントローラにプロパティを追加することです。 CIはすでにシンボルを使用しているため、変数の名前は$ configであってはなりません。これはConfigクラスで定義され、設定されています。だから、この答えのために私は$sysConfigを使用します。

class Some_controller extends CI_Controller 
{ 
    protected $sysConfig; //class property with scope to this controller 

    public function __construct() 
    { 
    parent :: __construct(); 
    $this->load->model('sysConfig_model'); 
    } 

sysConfig_model(図示せず)は、確立していると思われるテーブルを管理します。私はコードを表示しないので、そのモデルの関数を作り上げています。モデル関数get($id)は、$idに基づいて必要な "ユーザー"を取得し、そのデータを配列に返します。 (有効値の設定$idは表示されません)

コントローラーは、このコントローラの機能のように、$this->sysConfigのように必要に応じてプロパティを使用できます。

クラス定義が実際$this->sysConfigに値を割り当てる

public function format_title() 
    { 
    if(isset($this->sysConfig){ 
     $this->sysConfig['suckup'] = "the most highly regarded " 
     . $this->sysConfig['title'] 
     . " in the world visit our site!"; 
    } 
    } 

...に続くは、このコードの次のビットで起こります。この例では、コントローラのindex()関数は、データベースから取得するユーザーの「ID」である引数を受け取ることができます。

public function index($id = NULL) 
    { 
    //assign data to the class property $sysConfig from the model 
    $this->sysConfig = $this->sysConfig_model->get($id); 

プロパティは非常に簡単にビューに渡すことができます。まずは吸います。

 $this->format_title(); 
    $data['userStuff'] = $this->sysConfig; 
    $this->load->view('some_view', $data); 
    } //end of index() 

} //end of class Some_controller 

some_view.php

<div> 
    <h4>Welcome <?php echo $userStuff['firstName']. " " . $userStuff['lastName']; ?></h4> 
    <p>I cannot say how swell it is to have <?php echo $userStuff['suckup']; ?></p> 
</div> 

"グローバル" のアイデアは本当にPHPでOOPの方法論に反している - または任意の他のOOP言語。

関連する問題