laravel控制器分组

在laravel默认配置中,所有控制器都在 app/controllers 目录下,很多时候需要分组功能,比如 API分组,ADMIN分组,前台分组。

手册中并没有明确就这个需求给出解决方案,故再次记录一下自己的解决方式。

提到分组,我首先想到的就是利用php5.3以上版本才有的namespace命名空间功能。laravel默认使用的是classmap来自动加载类库,我们查看composer.json,可以看到一段:

"autoload": {
   
"classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
},

我们看到其中有一行 "app/controllers" ,框架会在这个目录里搜索控制器。
如果我们要将控制器分组,当然可以增加几个目录,比如"app/controllers/admin","app/controllers/api",这样框架也会挨个目录查找指定的类,这种模式有个缺点,那就是在这些子目录中,得保持类名的唯一性,也就是说你在admin中定义了HomeController 就不能在 api中定义同名控制器。

换种方式,用namespace来支持自动加载,我们知道laravel深度结合了composer,也使用了composer的autoloader类,所以我们只要配置composer.json即可轻松实现基于namespace的自动加载。

在上面代码中加几行代码:

"autoload": {
    "psr-4":{
        "mc\\":"app/controllers"
    },
"classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
},

这样,我们将整个controllers目录映射到 mc 命名空间下,而laravel路由应当这样写:

Route::get(‘/admin‘,‘admin\[email protected]‘);

控制器文件位于:app/controllers/admin下:

<?php
namespace mc\admin;
class HomeController extends \BaseController {
    function index()
    {
        return "admin/index";
    }
}

总结:这样我们很方便的就可以将控制器按命名空间进行分组。

时间: 2024-07-28 18:39:09

laravel控制器分组的相关文章

laravel 控制器

1.定义控制器 在之间的输出hello world! 通过路由指向控制器就是所为的简单定义控制器. 在app/Http/Controllers 目录下建一个控制器 IndexController.php <?php namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; class IndexController extends Controller { public function

laravel 控制器里 redirect url地址传两个参数

public function red_search() { $url=Request::all(); return redirect('search/'.$url['category'].'/'.$url['term']); }

laravel 控制器内使用切换数据库

1/ 首先需要在config/database.php文件中增加 数据库的相关配置  并为设置起名称 2/ 其次 在数据库中链接并使用 \DB::connection("mysql_other")->table("user")->find($id);\DB::connection("mysql_other")->table("user")->where("id",$id)->u

laravel 控制器中使用 try catch

需要操作数据库时,当数据字段不一致,mysql报错,控制程序,需要使用try catch 下面是使用案例 $morder['morder_time'] = time();//在这里使用try catchtry { $res_morder = \DB::table('ccsp_morder') ->insert($morder);} catch (\Exception $e) { \DB::rollback(); \DB::commit(); return ['code' => 1004, 'd

laravel 控制器验证

路由文件 web.php Route::any('/post/create', '[email protected]'); 代码文件 PostController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request;use App\Http\Controllers\Controller;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facad

Laravel之控制器

一.简介 将所有的请求处理逻辑都放在单个routes.php 中肯定是不合理的,你也许还希望使用控制器类组织管理这些行为.控制器可以将相关的 HTTP 请求封装到一个类中进行处理.通常控制器存放在app/Http/Controllers 目录中. 二.基本控制器 1.简单示例下面是一个基本控制器类的例子.所有的 Laravel 控制器应该继承自 Laravel 自带的控制器基类Controller <?php namespace App\Http\Controllers; use App\Use

学渣也要搞 laravel(3)—— HTTP控制器

1. laravel 控制器在app/Http/Controllers/ 下,你会看到里面有一个Controller.php ,之后我们创建的控制器都是继承这个总控制器的.创建控制器只需要在这里面添加一个文件 比如 IndexController.php 这个文件,在里面添加: 1 <?php 2 3 namespace App\Http\Controllers; 4 5 use Illuminate\Http\Request; 6 7 use App\Http\Requests; 8 9 cl

Laravel HTTP 路由

路由配置文件 定义:路由是指分析来自客户端请求的统一资源标识符(URI),根据设定的规则将请求分发至期待的处理逻辑(匹配请求地址),这一规则就是路由规则,而这一过程就是路由. Route::get('/', function() { return view('index'); }); 我们访问 http://yourdoamin/ 会显示渲染后的视图文件 index 的内容.这对于制作一个网站首页而言,十分简明,不需要再额外创建控制器.当然,如果首页是一类组织方法中的一部分,也可以用控制器实现.

《物联网框架ServerSuperIO教程》-20.网络通讯控制器分组,提高交互的负载平衡能力。v3.6.6 版本发布

20.1     概述 ServerSuperIO原来在网络通讯模式下,只有一个网络控制器,在自控模式.并发模式和单例模式下时都是异步处理返回的数据,并不会出现性能问题.但是在轮询模式下,一个网络控制器要按顺序逐一操作设备驱动的发送和接收,这样就会出现轮询周期过长,达不到读取数据频率的情况. 为了解决上述问题,现在对设备驱动的参数增加了网络控制器分组功能,网络控制器会根据设备参数设置的分组名称控制设备驱动.例如轮询模式下,有1000个设备驱动,可以每10个设备驱动设置相同的分组名称,这10个设备