栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > Laravel

Laravel控制器

Laravel 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我们已经在前面学习了中间件,它可以与控制器一起使用。中间件也可以被分配到控制器的路由或控制器的构造函数中。可以使用中间件方法来分配中间件到控制器。 已注册中间件也可以限制到控制器的某些方法。

分配中间件路由
Route::get('profile', [
   'middleware' => 'auth',
   'uses' => 'UserController@showProfile'
]);
在这里,我们在路由配置文件分配身份验证中间件使用到 UserController。 控制器的构造函数中分配中间件
middleware('auth');
   }
}
在这里,我们将身份验证分配使用中间件在UserController的构造方法。 示例

第1步 - 添加以下行到 app/Http/routes.php 文件文件并保存。

routes.php

 'First',
   'uses' => 'UserController@showPath'
]);
第2步 - 通过执行以下行创建一个名为FirstMiddleware 的中间件。
php artisan make:middleware FirstMiddleware
第3步 - 添加新创建一个名为 FirstMiddleware 的处理方法,下面的代码在 app/Http/Middleware/FirstMiddleware.php 。

FirstMiddleware.php

First Middleware';
      return $next($request);
   }
}
第4步 - 通过执行以下行创建一个叫作 SecondMiddleware 的中间件。
php artisan make:middleware SecondMiddleware

第5步 - 添加以下代码在新创建一个处理方法 SecondMiddleware 在 app/Http/Middleware/SecondMiddleware.php.

SecondMiddleware.php

Second Middleware';
      return $next($request);
   }
}
注册上面两个中间件,打开文件:app/Http/Kernel.php
    protected $routeMiddleware = [
 'auth' => AppHttpMiddlewareAuthenticate::class,
 'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
 'can' => IlluminateFoundationHttpMiddlewareAuthorize::class,
 'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
 'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
 'First'  => AppHttpMiddlewareFirstMiddleware::class,
 'Second'  => AppHttpMiddlewareSecondMiddleware::class,
    ];
第6步 - 通过执行以下行创建一个名为 UserController 的控制器。
php artisan make:controller UserController
第7步 - URL成功执行后,您会看到以下输出 -



第8步 - 将以下代码复制到 app/Http/UserController.php 文件。

app/Http/UserController.php

middleware('Second');
   }
   public function showPath(Request $request){
      $uri = $request->path();
      echo '
URI: '.$uri; $url = $request->url(); echo '
'; echo 'URL: '.$url; $method = $request->method(); echo '
'; echo 'Method: '.$method; } }
第9步 - 现在,如果还没有启动PHP的内部Web服务器,可通过执行以下命令。
php artisan serve
第10步 - 请访问以下网址。

http://localhost:8000/usercontroller/path

第11步- 将出现如下面的输出结果。



Restful 资源控制器

通常情况下当开发一个应用,我们需要执行CRUD(创建,读取,更新,删除)操作。Laravel使这项工作更容易做到的。只需创建一个控制器,而Laravel会提供所有的CRUD操作的方法。您也可以注册一个路由的所有方法在routes.php文件中。

示例 第1步 - 通过执行以下命令创建一个名为 myController 的控制器。
php artisan make:controller MyController
第2步 - 添加以下代码到文件:app/Http/Controllers/MyController.php

app/Http/Controllers/MyController.php


	

第3步 - 添加以下代码到文件:app/Http/routes.php

app/Http/routes.php

Route::resource('my','MyController'); 

步骤4 - 我们现在通过使用资源控制器注册MyController 的所有方法。下面是由资源控制器处理的动作的列表。

动词 路径 动作 路由名称
GET /my index my.index
GET /my/create create my.create
POST /my store my.store
GET /my/{my} show my.show
GET /my/{my}/edit edit my.edit
PUT/PATCH /my/{my} update my.update
DELETE /my/{my} destroy my.destroy
第5步 - 尝试执行下表中的网址URL。
URL 描述 输出图像
http://localhost:8000/my 执行 Controller.php 的 index 方法 index
http://localhost:8000/my/create 执行 Controller.php 的 create 方法 create
http://localhost:8000/my/1 执行 Controller.php 的 show方法 show
http://localhost:8000/my/1/edit 执行 Controller.php 的 edit方法 edit
隐式控制器

隐式控制器允许你定义一个路由处理控制器中的每一个动作。如下图所示使用 Route:controller 方法,在路由文件 route.php 中定义它。

Route::controller(‘base URI’,’’);
替换 使用你给定控制器类名。

控制器的方法名应该是类似 GET或POST HTTP动词开头。如果以 get 开始,它只会处理 get 请求,如果它使用 post 开駋那么将处理post请求。在HTTP动词后,可以方法使用任何名称,但它应遵循 URI 的格式。

示例

第1步 - 执行下面的命令来创建一个控制器。其类名称为 ImplicitController。这个类你也可以使用其它的任何名称。

php artisan make:controller ImplicitController
第2步 - 成功执行后,会产生以下输出 - 第3步 - 将以下代码复制到 app/Http/Controllers/ImplicitController.php 文件。

app/Http/Controllers/ImplicitController.php


	
		第4步 - 下面的行添加到 app/Http/routes.php 以将请求路由到指定的控制器。
	
	

app/Http/routes.php

Route::controller('test','ImplicitController');
构造器注入

Laravel服务容器是用来解析所有Laravel控制器。因此,你能够输入-提示控制器也许需要在其构造依赖。依赖关系将被自动解析和注射到控制器实例。

示例 步骤1 - 下面的代码添加到 app/Http/routes.php 文件。

app/Http/routes.php

class MyClass{
   public $foo = 'bar';
}
Route::get('/myclass','ImplicitController@index');
第2步 - 下面的代码添加到 app/Http/Controllers/ImplicitController.php 文件。

app/Http/Controllers/ImplicitController.php

myclass = $myclass;
   }
   public function index(){
      dd($this->myclass);
   }
}
第3步 - 访问以下网址来测试构造器注入。

http://localhost:8000/myclass

第4步 - 输出结果如下面图所示。



方法注入 除了构造器注入,也可以输入 - 在你的控制器操作方法触发依赖。 示例 步骤1 - 下面的代码添加到 app/Http/routes.php 文件。

app/Http/routes.php

class MyClass{
   public $foo = 'bar';
}
Route::get('/myclass','ImplicitController@index');
第2步 - 下面的代码添加到 app/Http/Controllers/ImplicitController.php 文件。

app/Http/Controllers/ImplicitController.php


	
		第3步 - 访问以下网址来测试构造器注入。
	
	

http://localhost:8000/myclass

它会产生下面的输出 -




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/9879.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号