2014-01-14 14 views
9

Ich habe einen Controller namens home.php, in dem eine Funktion namens podetails ist. Ich möchte diese Funktion in einem anderen Controller user.php aufrufen.
Ist es möglich, dies zu tun? Ich habe über HMVC in CI gelesen, aber ich möchte wissen, ist es möglich, ohne Verwendung von HMVC zu tun?So rufen Sie eine Controller-Funktion in einem anderen Controller in Code-Nummer

+0

mit Beispiel erklären und verwenden –

+5

Ich habe es sehr deutlich erklärt. Bitte lesen Sie die Frage erneut. – user2936213

+0

bitte angeben, was ist die Verwendung? –

Antwort

11

zu Controller erweitern bitte entweder diese tutorial folgen oder einen Code unten sehen.


Unterschiede zwischen private/public/protected


machen eine Datei im Ordner /application/core/ namens MY_Controller.php

Innerhalb dieser Datei haben einige Code wie

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

class MY_Controller extends CI_Controller { 

    protected $data = Array(); //protected variables goes here its declaration 

    function __construct() { 

     parent::__construct(); 
     $this->output->enable_profiler(FALSE); // I keep this here so I dont have to manualy edit each controller to see profiler or not   
     $this->load->model('some_model'); //this can be also done in autoload... 
     //load helpers and everything here like form_helper etc 
    } 

    protected function protectedOne() { 

    } 

    public function publicOne() { 

    } 

    private function _privateOne() { 

    } 

    protected function render($view_file) { 

     $this->load->view('header_view'); 
     if ($this->_is_admin()) $this->load->view('admin_menu_view'); 

     $this->load->view($view_file . '_view', $this->data); //note all my view files are named <name>_view.php 
     $this->load->view('footer_view'); 

    } 

    private function _isAdmin() { 

     return TRUE; 

    } 

} 

und jetzt in jeder von Ihnen bestehenden Controller bearbeiten nur 1st oder 2 nd Linie, wo

class <controller_name> extends MY_Controller { 

und fertig

auch beachten Sie, dass alle Variablen, die gemeint sind, im Hinblick verwendet werden sollen in dieser Variablen (array) $this->data

Beispiel einiger Controller, der durch MY_Controller erweitert

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

class About extends MY_Controller { 

    public function __construct() { 

     parent::__construct(); 

    } 

    public function index() { 
     $this->data['today'] = date('Y-m-d'); //in view it will be $today; 
     $this->render('page/about_us'); //calling common function declared in MY_Controller 
    } 

} 
+0

Danke das ist viel besser :) – user2936213

+0

Schöne Lösung. Vielen Dank – user2899728

2

schreiben Sie die podetails() als eine Funktion in einer Hilfsdatei.

dann laden Sie diesen Helfer in beiden Controllern.

in der Steuerung einfach podetails() aufrufen

Angenommen:

--controller 1--

function podetails() 
{ 
    podetails(); // will call function in helper ; 
} 

--controller 2--

function podetails() 
{ 
    podetails(); // will call function in helper ; 
} 
Verwandte Themen