例如,如果我想使用HtmlHelper和FormHelper,我会在我的控制器中启用它们
class PostsController extends AppController {
public $helpers = array('Html', 'Form');
public function index() {
$this->set('posts', $this->Post->find('all'));
}
}
但是,当我删除该行时,我仍然可以在我的视图中使用这样的帮助:
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<!-- It works -->
<?php echo $this->Html->link($post['Post']['title'],
array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?>
</td>
<td><?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>
<?php unset($post); ?>
那么,为什么我会启用它们如果它可以正常启用呢?
答案 0 :(得分:1)
在CakePHP中,Html和Form是默认助手。因此,即使您不写这一行,也会加载这两个:
public $helpers = array('Html', 'Form');
但是,如果你想使用任何其他助手(例如Js,Time等),你需要声明这个以及这两个默认助手。
public $helpers = array('Js', 'Time'); // Incorrect approach as it will overwrite the default helpers
public $helpers = array('Form', 'Html', 'Js', 'Time'); // Correct approach
如果需要为所有控制器启用帮助程序,请将帮助程序的名称添加到
$helpers
中的/app/Controller/AppController.php
数组中(如果不存在则创建它)。请记住包含默认的Html和表单助手:
答案 1 :(得分:0)
猜猜你已经在App Controller中启用了这些助手。随着App控制器在每个控制器中得到扩展,这就是为什么这些助手仍在为您工作。