📅  最后修改于: 2020-10-23 08:00:28             🧑  作者: Mango
在MVC框架中,字母“ C”代表控制器。它充当视图和模型之间的直接流量。在本章中,您将学习Laravel中的Controllers。
根据您使用的操作系统打开命令提示符或终端,然后使用Artisan CLI(命令行界面)键入以下命令来创建控制器。
php artisan make:controller --plain
将
您会看到一些基本的编码已经为您完成,您可以添加自定义编码。可以通过以下语法从routes.php调用创建的控制器。
Route::get(‘base URI’,’controller@method’);
步骤1-执行以下命令以创建UserController 。
php artisan make:controller UserController --plain
步骤2-成功执行后,您将收到以下输出。
步骤3-您可以在app / Http / Controller / UserController.php上看到已创建的控制器,其中已经为您编写了一些基本编码,您可以根据需要添加自己的编码。
我们之前已经看过中间件,它也可以与控制器一起使用。中间件也可以分配给控制器的路由或在控制器的构造函数中。您可以使用中间件方法将中间件分配给控制器。注册的中间件也可以限于控制器的某些方法。
Route::get('profile', [
'middleware' => 'auth',
'uses' => 'UserController@showProfile'
]);
在这里,我们在配置文件路由中将auth中间件分配给UserController。
middleware('auth');
}
}
在这里,我们使用UserController构造函数中的中间件方法分配auth中间件。
步骤1-将以下代码行添加到app / Http / routes.php文件并保存。
routes.php
'First',
'uses' => 'UserController@showPath'
]);
步骤2-通过执行以下代码行,创建一个名为FirstMiddleware的中间件。
php artisan make:middleware FirstMiddleware
步骤3-将以下代码添加到位于app / Http / Middleware的新创建的FirstMiddleware的handle方法中。
FirstMiddleware.php
First Middleware';
return $next($request);
}
}
步骤4-通过执行以下命令来创建一个名为SecondMiddleware的中间件。
php artisan make:middleware SecondMiddleware
步骤5-在app / Http / Middleware处新创建的SecondMiddleware的handle方法中添加以下代码。
SecondMiddleware.php
Second Middleware';
return $next($request);
}
}
步骤6-通过执行以下行来创建一个名为UserController的控制器。
php artisan make:controller UserController --plain
步骤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-访问以下URL。
http://localhost:8000/usercontroller/path
步骤11-输出将如下图所示。
通常在制作应用程序时,我们需要执行CRUD(创建,读取,更新,删除)操作。 Laravel使我们的工作变得轻松。只需创建一个控制器,Laravel就会自动提供CRUD操作的所有方法。您也可以在route.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的所有方法。下表是资源控制器处理的动作表。
Verb | Path | Action | Route Name |
---|---|---|---|
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 | Description | Output Image |
---|---|---|
http://localhost:8000/my | Executes index method of MyController.php | index |
http://localhost:8000/my/create | Executes create method of MyController.php | create |
http://localhost:8000/my/1 | Executes show method of MyController.php | show |
http://localhost:8000/my/1/edit | Executes edit method of MyController.php | edit |
隐式控制器允许您定义一条路由来处理控制器中的每个动作。您可以使用Route:controller方法在route.php文件中定义它,如下所示。
Route::controller(‘base URI’,’’);
将
控制器的方法名称应以HTTP动词开头,例如get或post。如果以get开头,它将仅处理get请求;如果以post开头,则将处理post请求。可以在HTTP谓词后面加上任何名称,但该方法应遵循URI的标题大小写形式。
步骤1-执行以下命令以创建控制器。我们保留了类名ImplicitController 。您可以给班级选择任何名字。
php artisan make:controller ImplicitController --plain
步骤2-成功执行步骤1后,您将收到以下输出-
步骤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-访问以下URL以测试构造函数注入。
http://localhost:8000/myclass
步骤4-输出将如下图所示。
除了注入构造函数外,您还可以键入-提示依赖于控制器的action方法。
步骤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-访问以下URL以测试构造函数注入。
http://localhost:8000/myclass
它将产生以下输出-