Code前端首页关于Code前端联系我们

Laravel教程:控制器(MVC框架的c)

terry 2年前 (2023-09-25) 阅读数 49 #后端开发
在MVC框架中,字母“C”代表控制器。它充当视图和模型之间的命令中心(或桥梁)。创建控制器 在操作系统上打开命令或终端,然后键入以下命令以使用 Artisan CLI(命令行界面)创建控制器。
php artisan make:controller <controller-name> --plain

将控制器名称替换为 。我们将通过传递一个参数来创建一个简单的构造函数 - simple。如果您不想创建自定义构造函数,则可以省略参数。创建的构造函数位于 app/Http/Controllers 中。您会发现基本编辑已自动完成,并且您可以添加自定义颜色。可以使用以下语法通过route.php 文件调用创建控制器。

语法

Route::get(‘base URI’,’controller@method’);

示例

步骤 1 - 运行以下命令创建用户控制器 - UserController。
php artisan make:controller UserController
第2步 – 执行后,您将得到以下结果。
Laravel教程:控制器(MVC框架之c)

第3步 - 在app/Http/Controller/UserController.php中可以看到创建的控制器已经为自己生成了基本代码,您可以添加自己的代码。

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller {
   //
}
控​​制器中间件

前面我们了解了中间件,它可以在控制器中使用。中间件可以安装在控制器路径中或由控制器开发人员安装。可以使用中间件方法将中间件分配给控制器。注册的中间件也可以通过某些方式受到控制器的限制。路由中间件部分

Route::get('profile', [
   'middleware' => 'auth',
   'uses' => 'UserController@showProfile'
]);
这里,我们在配置文件中向UserController提供身份验证中间件。将中间件放入控制器的构造函数中
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller {
   public function __construct(){
      $this->middleware('auth');
   }
}
这是使用 UserController 的构造函数设置身份验证中间件的地方。

示例

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

routes.php

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

FirstMiddleware.php

<?php
namespace App\Http\Middleware;
use Closure;

class FirstMiddleware {
   public function handle($request, Closure $next) {
      echo '<br>First Middleware';
      return $next($request);
   }
}
步骤 4 – 通过执行以下几行创建一个名为 SecondMiddleware 的中间件。
php artisan make:middleware SecondMiddleware

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

SecondMiddleware.php

<?php
namespace App\Http\Middleware;
use Closure;

class SecondMiddleware {
   public function handle($request, Closure $next){
      echo '<br>Second Middleware';
      return $next($request);
   }
}
键入以上两个中间件,然后打开文件app/Http /Kernel.php
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'First'  => \App\Http\Middleware\FirstMiddleware::class,
        'Second'  => \App\Http\Middleware\SecondMiddleware::class,
    ];
第 6 步 - 通过执行以下几行创建一个名为 UserController 的控制器。
php artisan make:controller UserController
第 7 步 - 成功创建 URL 后,您将看到以下输出 -
Laravel教程:控制器(MVC框架之c)第 8 步 - 将以下代码复制到 app/Http/UserController.php 文件。

app/Http/UserController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

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

http://localhost:8000/usercontroller/path 步骤 11 - 将出现以下输出。
Laravel教程:控制器(MVC框架之c)Restful 资源控制器

通常在开发应用程序时我们需要进行 CRUD(创建、读取、更新、删除)。 Laravel 使这项任务变得简单。只需创建一个控制器,Laravel 就会提供 CRUD 操作的所有方法。您还可以在route.php 文件中编写路由的所有方法。

示例

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

app/Http/Controllers/MyController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class MyController extends Controller {
   public function index(){
      echo 'index';
   }
   public function create(){
      echo 'create';
   }
   public function store(Request $request){
      echo 'store';
   }
   public function show($id){
      echo 'show';
   }
   public function edit($id){
      echo 'edit';
   }
   public function update(Request $request, $id){
      echo 'update';
   }
   public function destroy($id){
      echo 'destroy';
   }
}

步骤 3 – 将以下代码添加到文件中:/ http /routes.php

app/Http/routes.php

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

第 4 步 - 我们使用源控制器编写 MyController 的所有方法。以下是资源管理器处理的活动列表。

动词 路径 操作 路径名称
GET/my❀index❀index❀index /我的/创建创建my.create
POST/mystoremy.store
GET/my/♽♽♽ my.show
GET /我的/{my}/editeditmy.edit
PUT/PATCH/my/{my}♽
DELETE/my/{my}destroymy.destroy
步骤 5 - 尝试执行下表中的 URL。
URL描述输出图像
http://localhost:8000/my创建Controller.php索引方法♷索引♷ /my/create添加创建方法Controller.phpcreate
http://localhost:8000/my/1创建show方法Controller.phphttp: //localhost:8000/my/1/编辑执行Controller.phpedit方法。动作控制器。使用 Route:controller 方法,如下图所示,并在 Route.php 文件中定义它。

Route::controller(‘base URI’,’<class-name-of-the-controller>’);
将 替换为您提供的控制器类名称。

控制方法名称应以 HTTP 动词开头,例如 GET 或 POST。如果以 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

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ImplicitController extends Controller {
   /**
   * Responds to requests to GET /test
   */
   public function getIndex(){
      echo 'index method';
   }
   
   /**
   * Responds to requests to GET /test/show/1
   */
   public function getShow($id){
      echo 'show method';
   }
   
   /**
   * Responds to requests to GET /test/admin-profile
   */
   public function getAdminProfile(){
      echo 'admin profile method';
   }
   
   /**
   * Responds to requests to POST /test/profile
   */
   public function postProfile(){
      echo 'profile method';
   }
}
步骤 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

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ImplicitController extends Controller {
   private $myclass;
   
   public function __construct(\MyClass $myclass){
      $this->myclass = $myclass;
   }
   public function index(){
      dd($this->myclass);
   }
}
步骤 3 – 访问以下 URL 来测试开发人员注入。

http://localhost:8000/myclass第4步 - 结果如下图所示。
Laravel教程:控制器(MVC框架之c) 注入方法 除了构造函数注入之外,你还可以输入——创建对你的控制方法的依赖。

示例

步骤 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

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ImplicitController extends Controller {
   public function index(\MyClass $myclass){
      dd($myclass);
   }
} 
第 3 步 - 访问以下 URL 来测试开发人员注入。

http://localhost:8000/myclass这将产生以下输出 -
Laravel教程:控制器(MVC框架之c)

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门