如何通过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中的其他控制器扩展通用控制器?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 post 方法将数据从 ajax 传递到 laravel 5.2 控制器
如何将控制器中的 Laravel 4.2 beforeFilter 转换为 Laravel 5.2 中的自定义中间件
如何通过邮件方法将数据从 ajax 传输到 laravel 5.2 控制器