代码之家  ›  专栏  ›  技术社区  ›  sam nikzad

CodeIgniter-如何仅在默认控制器和方法中调用Helper方法

  •  0
  • sam nikzad  · 技术社区  · 6 年前

    我创造了一个 帮手 保存 user_agent 在里面 db 有方法的 saveVisit();

    访问帮助者:

      function saveVisit($visitable_type='',$visitable_id='')
      {
        $CI =& get_instance();
        $CI->load->library('user_agent');
        $ip = $CI->input->ip_address();
    
        $userId = $CI->session->userdata('userId');
        if (!isset($userId)) {
          $userId = 0;
        }
        if ($CI->agent->is_mobile()) {
          $mobile=$CI->agent->mobile();
        }else {
          $mobile=0;
        }
        $data = array(
          'ip'=>$ip,
          'visitable_id'=>$visitable_id,
          'visitable_type'=>$visitable_type,
          'user_id'=>$userId,
          'created_at'=>dbtime(),
          'browser'=>$CI->agent->browser(),
          'version'=>$CI->agent->version(),
          'platform'=>$CI->agent->platform(),
          'mobile'=>$mobile,
          'referral'=>$CI->agent->referrer(),
        );
        $CI->db->insert('visits',$data);
      }
    

    当我调用类似 saveVisit(); 在我的 帮手 ,一切正常,我写的地方就叫它!

    但是当我从 $route['default_controller'] = 'display/home'; 此方法将从所有 方法 在我所有的 控制器 !!!!

    我只想调用这个方法主页不是全部 控制器/方法 !

    这个问题只针对我 $route['default_controller']='display/home';

    我的控制器代码:

    class Display extends CI_Controller {
        public function __construct()
      {
            parent::__construct();
      }
        public function home()
        {
            // some codes here 
            saveVisit('home');
        }
    }
    

    我想要 saveVisit(); 仅在主页中调用,其他人不调用

    编辑时间:

    我在中创建了一个新函数 帮手 默认测试和调用 控制器 ,函数被调用一次 但是 奔跑的 两次 !

    测试 方法 帮助程序中的代码:

     function test()
      {
          $CI =& get_instance();
    
          if ($CI->session->userdata('visit')!=null) {
            $plus = $CI->session->userdata('visit');
            $CI->session->set_userdata('visit',$plus+1);
            echo $CI->session->userdata('visit');
          }else {
            $CI->session->set_userdata('visit',1);
          }
    

    当我打电话的时候 test(); 内部默认值 Controller 每次页面刷新的结果为(其他控制器正常):

    2
    4
    6
    8
    10
    12
    14
    .
    .
    . 
    

    为什么会这样?

    编辑3:

    当我打电话给 助手函数 里面 默认控制器 它将运行两次,从另一个运行一次 控制器 !问题是我没打电话 功能 在其他 控制器

    1 回复  |  直到 6 年前
        1
  •  0
  •   Malay M    6 年前

    而不是打电话 test() 函数到中的每个函数 Display 班,叫它进去 __construct()

    <?php
    
    class Display extends CI_Controller {
    
        public function __construct(){
            parent::__construct();
            test();
        }
    
        public function home(){
            // some codes here 
            saveVisit('home');
    
        }
    }