在MVC中,字母“V”就是視圖(View)。視圖負(fù)責(zé)發(fā)送基于請求的輸出給用戶。 視圖類(View Classes)是加快開發(fā)過程的有效方式。
CakePHP中的視圖模板文件具有默認(rèn)擴(kuò)展名.ctp(CakePHP Template)。這些模板從控制器獲取數(shù)據(jù),渲染輸出并適當(dāng)?shù)娘@示給用戶。我們可以在模版中使用變量,和各種控制結(jié)構(gòu)。
模板文件存儲在src/Template/中的一個以使用他的控制器命名的文件夾,或者以它所對應(yīng)的行為命名的文件夾中。例如,對于產(chǎn)品控制器(Products Controller)view
()行為的視圖文件,通常就是src/Template/Products/view.ctp。
總之,控制器(如ProductsController的)的名稱和作為目錄(Products)的名稱相同,但不包含Controller;控制器(如ProductsController)的行為/方法的名稱(如view())是和視圖文件的名稱是相同的(如view.ctp)。
視圖變量是用來得到控制器值的變量。我們可以在視圖模板中使用盡可能多的變量。我們可以使用set()方法在視圖中傳遞值。這些變量集可以在你的視圖文件和你要渲染的布局中使用。以下是set()方法的語法。
CakeViewView::set(string $var, mixed $value)
這種方法有兩個參數(shù)- 變量名和它的值 。
在以下程序中,修改config/routes.php文件。
config/routes.php文件
<?php use CakeCorePlugin; use CakeRoutingRouteBuilder; use CakeRoutingRouter; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('template',['controller'=>'Products','action'=>'view']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
在src/Controller/目錄下創(chuàng)建ProductsController.php文件。復(fù)制以下代碼至其中。
src/Controller/ProductsController.php
<?php namespace AppController; use AppControllerAppController; class ProductsController extends AppController{ public function view(){ $this->set('Product_Name','XYZ'); } } ?>
在src/Template下創(chuàng)建Products目錄,并在Products目錄下創(chuàng)建一個名為view.ctp的視圖文件。復(fù)制以下代碼代碼至其中。
src/Template/Products/view.ctp
Value of variable is: <?php echo $Product_Name; ?>
通過訪問以下網(wǎng)址執(zhí)行上面的例子。
http://localhost:85/CakePHP/template
上述網(wǎng)址會產(chǎn)生以下輸出。
更多建議: