2017-12-28 12 views
0

私はLaravelを初めて利用しています。私はCodeigniterの他のコントローラによって共通のコントローラを拡張しました。ここに私のCI共通コントローラがあります。Laravel 5.2の他のコントローラで共通コントローラを拡張する方法は?

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class Common extends CI_Controller { 
     protected $_data = array(); 
     public function __construct() { 
     parent::__construct(); 

     $this->load->helper(array('url','form','html')); 
     $this->load->library(array('session','authentication','upload','image_lib','pagination')); 

     $this->_data['totalUser'] = 10; 
     $this->_data['newUser'] = 2; 
     $this->_data['totalChallenge'] = 1; 
     $this->_data['totalReport'] = 1; 
    } 
} 

これは私が他のCIコントローラでそれを拡張する方法である: -

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
include_once('common.php'); 
class Dashboard extends Common { 

     public function __construct() { 
     parent::__construct(); 
     $this->load->model('login_model'); 
    } 

    public function index() 
    { 
     $data['globalData'] = $this->_data; 
     $entity = 'dashboard'; 
     $action = 'view'; 
     $data['action'] = $action; 
     $data['entity'] = $entity; 
    $this->authentication->is_loggedin($this->session->userdata('user_name')); 
     $this->load->view('admin/dashboard',$data); 
    } 
} 

さて、ビューページでは、私はちょうど<?php echo $globalData['totalUser'];?>

のような値を印刷することができますなぜ私はこれをやっています?

今日、すべてのコントローラに20個のデータを追加する必要があるとします。その後、私は共通コントローラでのみ変更する必要があります。 $data['globalData'] = $this->_data;はすべてのコントローラーで20個のデータすべてを使用可能にするため、コーダーは20 LOCの代わりに1つのLOCを書きやすいです。

Laravel 5.2で上記の作業を行うにはどうすればよいですか?

+0

にあなた」という概念が欠落している場合は追加してください実装されたLaravelは完全に間違っています。 Laravelの基礎を最初に学ぶことをお勧めします。このようなスタイルで他のファイルを必要としないようにする。 –

+0

あなたは設定でそれを保持することもできます。コントローラの必要はありません –

答えて

0

Laravelには、基本コントローラがApp \ Controllerにあります。 CIControllerを使用しているのとまったく同じように使用することができます。なぜなら、生成されたすべてのコントローラ(Artisan製)がその基本プロジェクトコントローラを拡張しているからです。

あなたが簡単にすなわち(/コントローラ)と同じディレクトリにLaravelコントローラをエクステントベースコントローラを作成することができます
0

サンプル

DashboardController.php 
class DashboardController extends \BaseController { 

public function index() 
{ 
    $data['globalData'] = $this->_data; 
    $entity = 'dashboard'; 
    ...... 


} 


BaseController.php (extends laravel Controller) 
<?php 

class BaseController extends Controller { 

    /** 
    * 
    * define your value 
    */ 
    protected $_data = "20"; 


} 

後何が

関連する問題