如何自动获得一个泛函控制器的各项功能加载在笨(How to get a functiona auto

2019-10-29 03:19发布

我有一个示例脚本

<?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');

      }
}

?>

你可以看到我有这两条线总是在每一个功能

$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();

现在我想的替代品,从而自动地拥有这两个函数调用

说一下我定义它返回数组的函数

当我只写这个剧本

echo pro_user()然后将其显示pro_user量

说,在应用程序/管理/配置/ 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

Answer 1:

你可以在是CI_Controller定义这些,每个控制器扩展了,所以你将有他们在每个控制器功能以及

system/core/codeigniter.php 

cahnge

class CI_Controller {

    private static $instance;

class CI_Controller {

    private static $instance;
        public $pro_users;
        public $any_thing ;

然后在所述端__construct()在同一页中的功能

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

现在每个控制器可以有通过调用

$this->pro_users


Answer 2:

我认为最好的办法是写一个笨钩,并设置与功能的变量的值,然后将该变量传递给视图。 在视图中调用模型功能打破了MVC模式。

您可以使用post_controllerpost_controller_constructor ,更多的信息:

  • http://ellislab.com/codeigniter/user-guide/general/hooks.html
  • 使用CI钩共同变量


Answer 3:

我认为最好的办法是写一个辅助和自动加载加载它。

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

function alphabetArray() {
    $alph = array();
    for ($i=65; $i<=90; $i++) {
        array_push($alph, chr($i));
    }
    return $alph;
}

现在anyehre在代码中,我可以打电话(从视图代码)

<?php
     echo "|";
     foreach (alphabetArray() as $alphabet) {
     echo '<a href="#"> '.$alphabet.' </a> |';
}
?>

正如你可以看到我的alphabetArray()函数是“全球性”的功能,它可以在模型/视图/控制器一起使用



文章来源: How to get a functiona automatically load in every function of controllers in COdeigniter
标签: codeigniter