laravel之Controller学习带参请求、别名设置、中间件应用、RESTful

1、使用artisan生成控制器

创建文件目录:app\Http\Controllers

#默认生成
php artisan make:controller TestController 
#初始化生成不包含一些方法
php artisan make:controller TestController --plain
2、控制器与路由模块配合

路由模块请求地址语义化自定义
控制器使用@连接成员方法, 当前的方法就是请求地址执行的操作
return 在这里可以直接返回给客户端功能类似echo

1. 普通方式请求

路由模块代码:

Route::get('user/test','TestController@show');

控制器代码:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
    //
    public function show(){
        return 'this is show function ';
    }
}

2. 带参请求

路由模块代码:

Route::get('user/test/{id}/{name}','TestController@show');

控制器代码:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
    //
    public function show($id,$name){
        return 'show方法获取的id:'.$id.' , name:'.$name;
    }
}

3. 别名

路由模块代码:

Route::get('/Admin/User/OtherName/{id}',[
    'as'=>'OtherName',
    'uses'=>'TestController@OtherName'
]);

控制器代码:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
    public function OtherName($id)
    {
    	//这里使用别名还原完整的URL
        return route('OtherName', ['id' => $id]);
    }
}

4. 应用中间件

路由模块代码:

//第一种写法
Route::get('/Admin/ConMid',[
    'middleware'=>'login',//中间件小写,大写会当成类名使用
    'uses'=>'TestController@ConMid'
]);
//第二种写法
Route::get('/Admin/ConMiddle','TestController@ConMid')->middleware('login');

控制器代码:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
    public function ConMid()
    {
        return '测试控制器应用中间件方法';
    }
}

5. 隐式控制器

注意:如果未定义当前方法,会报404页面

路由模块代码:

Route::controller('test','TestController'); //Route::controller('路由模块','对应的控制器');隐式控制器写法

举例:get 方式访问test/add 模块 add是控制器的方法, 我们可以再控制器模块中使用getAdd(get请求)/postAdd(oost请求)调用方法
控制器代码:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
    public function getAdd()
    {
        return '隐式控制器测试页面';
    }
}

6. RESTful控制器

注意:
路由模块代码:

Route::resource('test','TestController'); //Route::resource('路由模块','对应的控制器'); RESTful控制器写法

控制器代码:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
     /**
     * url:test
     * 请求方式:get
     */
    public function index()
    {
        //
        return 'RESTful首页页面index';
    }


    /**
     * url:test/create
     * 请求方式:get
     */
    public function create()
    {
        //
        return 'RESTful create 添加页面';
    }


    /**
     * url:test
     * 请求方式:post
     */
    public function store(Request $request)
    {
        //
        return 'RESTful store post 请求首页';
    }

    /**
     * url:test/{id}
     * 请求方式:get
     */

    public function show($id)
    {
        //
        return 'RESTful show 请求的id:' . $id;

    }

    /**
     * url:test/{id}/edit
     * 请求方式:get
     */
    public function edit($id)
    {
        //
        return 'RESTful edit 请求的id:' . $id;
    }

    /**
     * url:test/{id}
     * 请求方式:put表单/patch
     * 隐藏域value='PUT'
     */
    public function update(Request $request, $id)
    {
        return 'RESTful 表单update请求的id:' . $id;
    }

    /**
     * url:test/{id}
     * 请求方式:delete
     * 隐藏域value='DELETE'
     */
    public function destroy($id)
    {
        //
        return 'RESTful 表单destroy请求的id:' . $id;
    }
}

隐藏域知识点与本文无关:csrf_field() 表单隐藏域通过全局验证中间件处理POST请求, 不要可以注释kernel.php ->verifycsrftoken中间件。否则需要加上csrf_field() 方法才能不报错

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值