0

サンプルスクリプトがあります

<?php
class level_price extends CI_Controller {
   function __construct() {
        parent::__construct();
        session_start();
        $this->load->library('encrypt');
    }

    function index()
    {
         if(!isset($_SESSION['uname'])){
            redirect(base_url().'admin.php/login');
        }
        $data['users']=$this->db->query("SELECT count(*)AS user FROM user_table")->result_array();
        $data['pro_users']=$this->db->query("SELECT count(*)AS pro_user FROM user_table WHERE membership_type <>0")->result_array();
        $this->load->model('level_model');
        $data['level_list']=$this->level_model->get_all_level();
        $this->load->view('header',$data);
        $this->load->view('level_price');
        $this->load->view('footer');
    }


    function add_level()
      {
          if(!isset($_SESSION['uname']))
              {
                redirect(base_url().'admin.php/login');
              }
         $this->load->model('level_model');
         $data['users']=$this->db->query("SELECT count(*)AS user FROM user_table")->result_array();
         $data['pro_users']=$this->db->query("SELECT count(*)AS pro_user FROM user_table WHERE membership_type <>0")->result_array();
         if(count($_POST))
           {
              $data['msg']=$this->level_model->add_level();
           }
         $this->load->view('header',$data);
         $this->load->view('add_level',$data);
         $this->load->view('footer');
      }

      function edit_level($id){
           if(!isset($_SESSION['uname'])){
            redirect(base_url().'admin.php/login');
        }
            $this->load->model('level_model');
            $data['level_id'] = $id;
            $data['users']=$this->db->query("SELECT count(*)AS user FROM user_table")->result_array();
            $data['pro_users']=$this->db->query("SELECT count(*)AS pro_user FROM user_table WHERE membership_type <>0")->result_array();
            if(count($_POST))
             {
              $data['msg']=$this->level_model->edit_level($id);

             }
            $data['level_info'] = $this->level_model->get_level($id);
            $this->load->view('header',$data);
            $this->load->view('edit_level',$data);
            $this->load->view('footer');

      }
}

?>

ご覧のとおり、すべての関数に常にこれらの2行があります

$data['users']=$this->db->query("SELECT count(*)AS user FROM user_table")->result_array();
$data['pro_users']=$this->db->query("SELECT count(*)AS pro_user FROM user_table WHERE membership_type <>0")->result_array();

今、これら2つの関数が自動的に呼び出されるような代替が必要です

配列を返す関数を定義します

そして、このスクリプトを書いたばかりのとき

echo pro_user()、次にpro_user数量を表示します

application/admin/config/autoload.php で言う

私はこのスクリプトを追加しました

$autoload['model'] = array('special_model');

special_model の関数は次のようになります

function  pro_user()
        {
            $data['pro_users']=$this->db->query("SELECT count(*)AS pro_user FROM user_table WHERE membership_type <>0")->result_array();
            echo $data['pro_users']['pro_user'];
        }

ビューphpのように、私はこのようなものが欲しいこのようなものを書きたい

<a data-rel="tooltip" title="" class="well span3 top-block" href="#">
                    <span class="icon32 icon-color icon-star-on"></span>
                    <div>Pro Members</div>
                    <div><?php $this->special_model->pro_user();?></div>
                    <span class="notification green">4</span>
                </a>

しかし、私はこのようなエラーが発生しています

A PHP Error was encountered

Severity: Notice

Message: Undefined index: pro_user

Filename: models/special_model.php

Line Number: 12
4

3 に答える 3

0

最良の方法は、codeigniter フックを作成し、その関数で変数の値を設定してから、その変数をビューに渡すことだと思います。ビューでモデル関数を呼び出すと、MVC パターンが壊れます。

post_controllerまたはを使用できますpost_controller_constructor。詳細:

于 2013-05-29T08:41:31.213 に答える