簡體   English   中英

如何在Laravel 5.2中通過其他控制器擴展通用控制器?

[英]How to extend a common controller by other controllers in Laravel 5.2?

我是Laravel的新手。 我通過Codeigniter中的其他控制器擴展了一個通用控制器。 這是我的CI通用控制器。

<?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個數據在每個控制器中都可用,編碼器很容易寫入一個LOC而不是20 LOC。

如何在Laravel 5.2中完成上述工作?

在Laravel中,您有一個位於App \\ Controller中的基本控制器。 您可以像使用CIController一樣使用它,因為所有生成的控制器(由Artisan進行)都在擴展該基礎項目控制器。

您可以輕松地創建將Laravel Controller擴展到同一目錄(即(/ controllers))的基本控制器

以下樣本

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";


}

如果缺少任何內容,請添加

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM