在CakePHP中,視圖渲染是通過視圖類和模板文件來實現的。為了有效地渲染視圖,你需要遵循以下步驟:
src/Template/View
目錄下,為每個視圖創建一個單獨的視圖類。例如,如果你有一個名為Users
的控制器,你可以創建一個名為UsersView.php
的視圖類。視圖類繼承自App\Template\View\AppView
類。namespace App\Template\View;
use Cake\ORM\TableRegistry;
use Cake\View\View;
class UsersView extends AppView
{
public $helpers = ['Html', 'Form'];
public function initialize(): void
{
parent::initialize();
$this->loadModel('Users');
}
}
src/Template
目錄下,為每個視圖類創建一個對應的模板文件。例如,對于上面的UsersView
類,你可以創建一個名為Users/index.ctp
的模板文件。在這個文件中,你可以使用CakePHP的視圖變量和方法來動態生成HTML內容。<!-- src/Template/Users/index.ctp -->
<h1>Users List</h1>
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
<?php foreach ($users as $user): ?>
<tr>
<td><?php echo h($user->id); ?></td>
<td><?php echo h($user->name); ?></td>
<td><?php echo h($user->email); ?></td>
</tr>
<?php endforeach; ?>
</table>
namespace App\Controller;
use App\Controller\AppController;
use Cake\ORM\TableRegistry;
class UsersController extends AppController
{
public function initialize(): void
{
parent::initialize();
$this->loadModel('Users');
}
public function index()
{
$users = $this->Users->find('all');
$this->set('users', $users);
}
}
config/routes.php
文件中,為你的控制器和操作指定了正確的路由。use Cake\Router\RouteBuilder;
Router::extend('default', function (RouteBuilder $routes) {
$routes->connect('/', ['controller' => 'Users', 'action' => 'index']);
});
遵循以上步驟,CakePHP將使用你創建的視圖類和模板文件有效地渲染視圖。