CakePHP - 视图



MVC 中的“V”代表视图。视图负责根据请求向用户发送输出。视图类是一种强大的方法,可以加速开发过程。

视图模板

CakePHP 的视图模板文件从控制器获取数据,然后呈现输出,以便能够正确地显示给用户。我们可以在模板中使用变量和各种控制结构。

模板文件存储在src/Template/目录下,该目录以使用这些文件的控制器的名称命名,并以其对应的操作名称命名。例如,Products 控制器“view()”操作的视图文件通常位于 src/Template/Products/view.php 中。

简而言之,控制器的名称(ProductsController)与文件夹的名称(Products)相同,但没有 Controller 字样,而控制器的操作/方法(view())名称(ProductsController)与视图文件(view.php)的名称相同。

视图变量

视图变量是从控制器获取值的变量。我们可以在视图模板中使用任意数量的变量。我们可以使用set()方法将值传递给视图中的变量。这些设置的变量将在视图和操作呈现的布局中都可用。以下是set()方法的语法。

Cake\View\View::set(string $var, mixed $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) {
   // Register scoped middleware for in scopes.
   $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 的视图文件。将以下代码复制到该文件中。

Value of variable is: <?php echo $Product_Name; ? >

通过访问以下 URL 来执行上述示例。

https://127.0.0.1/cakephp4/template

输出

以上 URL 将产生以下输出。

Variables
广告