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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过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";


}

如果有任何遗漏,请添加

以上是关于如何通过Laravel 5.2中的其他控制器扩展通用控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel 5.2中控制多个ajax请求

如何通过 post 方法将数据从 ajax 传递到 laravel 5.2 控制器

如何将控制器中的 Laravel 4.2 beforeFilter 转换为 Laravel 5.2 中的自定义中间件

如何通过邮件方法将数据从 ajax 传输到 laravel 5.2 控制器

使用ajax从控制器调用函数的新路由或其他方式? Laravel 5.2,阿贾克斯

如何将此集合转换为 Laravel 5.2 中的数组