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执行上述示例,输出如下所示: