CakePHP - 视图
MVC 中的字母"V"代表视图。视图负责根据请求向用户发送输出。视图类是加快开发过程的有效方法。
视图模板
CakePHP 的视图模板文件从控制器获取数据,然后呈现输出,以便可以正确显示给用户。我们可以在模板中使用变量、各种控制结构。
模板文件存储在 src/Template/ 中,该目录以使用这些文件的控制器命名,并以其对应的操作命名。例如,Products 控制器的 "view()" 操作的 View 文件通常位于 src/Template/Products/view.php 中。
简而言之,控制器的名称 (ProductsController) 与文件夹的名称 (Products) 相同,但没有 Controller 一词,控制器 (ProductsController) 的操作/方法的名称 (view()) 与视图文件的名称 (view.php) 相同。
视图变量
视图变量是从控制器获取值的变量。我们可以在视图模板中使用任意数量的变量。我们可以使用 set() 方法将值传递给视图中的变量。这些设置变量将在您的操作呈现的视图和布局中可用。以下是 set() 方法的语法。
Cake\View\View::set(string $var, combined $value)
此方法接受两个参数 − 变量的名称 和 变量的值。
示例
在 config/routes.php 文件中进行更改,如以下程序所示。
config/routes.php
<?php use Cake\Http\Middleware\CsrfProtectionMiddleware; use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/', function (RouteBuilder $builder) { // 在范围内注册范围中间件。 $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([ 'httpOnly' => true, ])); $builder->applyMiddleware('csrf'); $builder->connect('template',['controller'=>'Products','action'=>'view']); $builder->fallbacks(); });
在 src/Controller/ProductsController.php 处创建一个 ProductsController.php 文件。将以下代码复制到控制器文件中。
src/Controller/ProductsController.php
<?php declare(strict_types=1); namespace App\Controller; use Cake\Core\Configure; use Cake\Http\Exception\ForbiddenException; use Cake\Http\Exception\NotFoundException; use Cake\Http\Response; use Cake\View\Exception\MissingTemplateException; class ProductsController extends AppController { public function view(){ $this->set('Product_Name','XYZ'); } }
在 src/Template 创建一个 Products 目录,并在该文件夹下创建一个名为 view.php 的 View 文件。将以下代码复制到该文件中。
Value of variable is: <?php echo $Product_Name; ? >
通过访问以下 URL 执行上述示例。
http://localhost/cakephp4/template
输出
上述 URL 将产生以下输出。