如何通过Laravel 5.2中的其他控制器扩展通用控制器?

时间:2017-12-28 08:12:02

标签: php codeigniter 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中完成上述工作?

2 个答案:

答案 0 :(得分:0)

在Laravel中,您有一个位于App \ Controller中的基本控制器。 您可以像使用CIController一样使用它,因为所有生成的控制器(由Artisan提供)都在扩展该基础项目控制器。

答案 1 :(得分:0)

您可以轻松创建在同一目录中扩展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";


}

如果遗漏任何内容,请添加