CakePhp 2x是否仍然需要帮助者?

时间:2017-04-13 04:09:21

标签: php cakephp

例如,如果我想使用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); ?>

那么,为什么我会启用它们如果它可以正常启用呢?

2 个答案:

答案 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和表单助手:

参考:CakePHP 2.x Helpers

答案 1 :(得分:0)

猜猜你已经在App Controller中启用了这些助手。随着App控制器在每个控制器中得到扩展,这就是为什么这些助手仍在为您工作。