CakePHP 视图


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

视图模板


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

模板文件保存在src/Template/,在以控制器命名的目录中,并以其对应的动作命名。例如,ProductsController“view()”动作的视图文件是src/Template/Products/view.php。

简而言之,控制器(ProductsController)的名称与文件夹(Products)的名称相同但没有Controller这个后缀,控制器(ProductsController)的动作名称(view())与文件夹的名称相同视图文件(view.php)。

视图变量


视图变量是从控制器获取值的变量,我们可以根据需要在视图模板中使用任意数量的变量。我们可以使用set()方法将值传递给视图中的变量,这些变量将在视图和布局中可用。

以下是set()方法的语法:

Cake\View\View::set(string $var, mixed $value)

这个方法有两个参数:变量名它的值

修改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) {
    // 为 in 范围注册作用域中间件。
    $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
        'httpOnly' => true,
    ]));
    $builder->applyMiddleware('csrf');
    $builder->connect('template',['controller'=>'Products','action'=>'view']);
    $builder->fallbacks();
});

新建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/view.php文件,并将以下代码复制到该文件中:

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

访问http://localhost/cakephp4/template执行上述示例,输出如下所示:

Variables