Laravel5.3使用学习笔记---控制器

看完了laravel V5.3的路由和中间件部分,接着就是看控制器部分了。
参考官方英文文档,laravel 5.3控制器部分: https://laravel-china.org/docs/en/5.3/controllers


一. 控制器的定义和基本路由访问

定义一个控制器相当简单,结合PSR规则,在App\Http\Controllers路径下,新建TestController.php文件,文件代码这样写:

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class  TestController extends Controller{


    public function firstAction(){

    }

}

然后注册一个GET路由,如下:

Route::get('test_first', 'TestController@first_action');

注意这里第二个参数,是不用加控制器的完整命名空间的,因为框架默认会在前面添加“App\Http\Controllers”的命名空间前缀。
接着,浏览器输入以下网址就能使用了:

http://host/test_first

二. 控制器传递动态数据(构造函数注入和自定义动作(Action)注入)

要想往控制器中传递动态数据,可以在构造函数和具体动作(Action)函数的形参上进行,如:

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;
use App\Repositories\UserRepository;
use Illuminate\Http\Request;

class  TestController extends Controller{

    /**
     * The user repository instance.
     */
    protected $users;

    /**
     * Create a new controller instance.
     *
     * @param  UserRepository  $users
     * @return void
     */
    public function __construct(UserRepository $users)
    {
        $this->users = $users;  //直接初始化资源
    }

    public function first_action(Request $request){
        $name = $request->name;
        或
        $name = $request->input("name");
    }

}

三. 资源控制器

laravel中是提供了Route::resource函数来管理资源类控制器(如图片、表单等资源的CURD),当使用该方法注册路由时:

Route::resource('test', 'TestController');

laravel就会默认生成一系列路由(这大大减轻了工作量),自动生成的路由如下:
这里写图片描述

当输入URL:

http://host/test/create

就会访问到testcontroller下的create方法了。

Laravel 的resource函数还可以自定义路由名字:

//将TestController/create方法路由设为"test.build"
Route::resource('test', 'TestController',
                ['names' => ['create' => 'test.build']]); 

同时,Laravel 的resource函数限定具体控制器的访问权限:

//只允许访问index和show函数
Route::resource('test', 'TestController',
                ['only' => ['index', 'show']]);

//除了create、store、update、destroy外都可以访问
Route::resource('test', 'TestController',
                ['except' => ['create', 'store', 'update', 'destroy']]);

四. 路由缓存

当C端向服务器发起访问时,如果能将路由解析结果(url和控制器方法的对应关系)缓存起来,那么将加快响应速度。

具体方法就是使用artisan工具来创建路由缓存:

php artisan route:cache

清除路由缓存,也可以使用artisan指令,或者直接删除路由缓存文件(bootstrap/cache/routes.php)

php artisan route:clear
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值