1

だから私はこのIFステートメントを私の見解に持っています。それはすべて機能しますが、これを書くためのより良い方法があるかどうか疑問に思っています。両方のセッション呼び出しは不要に思えます...

if($this->session->userdata('campaign_name')){
    echo $this->session->userdata('campaign_name');
}
else {
    echo 'this';
}

この関数は、テキスト入力でインラインで使用されることに注意してください。だから私はできるだけ最小限のコードを探しています。

4

2 に答える 2

3

CI の Session クラスの userdata メソッドは、campaign_name存在しない場合は false を返すことに注意してください。したがって、未定義の可能性がある配列キー (campaign_name) に変数を割り当てます。

$campaign_name = $this->session->userdata('campaign_name');

if($campaign_name)
{
    echo $campaign_name;
}
else
{
    echo 'this';
}

また

if($campaign_name = $this->session->userdata('campaign_name'))
{ 
   echo $campaign_name;
}

コントローラーメソッド(/application/controllers/test_controller.php)

    <?php if (!defined('BASEPATH')) exit('No direct script access allowed');

    class Test_Controller extends CI_Controller
    {
        function __construct()
        {
            parent::__construct();

        }
        public function myFunction()
        {
            $data['campaign_name'] = $this->session->userdata('campaign_name');
            $this->load->view('test_view',$data);

        }
    }

ビュー(/application/view/test_view.php)

<html>
<head></head>
<body>
     <input type="text" value="<?php echo $campaign_name; ?>">
</body>
</html>
于 2012-11-21T02:20:25.410 に答える
1

コントローラーでは、そのセッション データの値を変数に格納し、それをビューに渡すことができます。ビューでは、変数を調べるだけの if else ステートメントを使用できます。RPM のようにビューに変数を設定しないことをお勧めします。それが機能している間、それはあなたが行っている懸念の分離を壊します。

また、CodeIgniter のビューに代替の PHP 構文を使用することも検討してください。これにより、コードがよりきれいになり、保守しやすくなります。

編集: RPM がコントローラーの変数を設定するために彼の回答を更新したことがわかりました。これは従うべき良い例です。

于 2012-11-21T02:23:23.153 に答える