【问题标题】:CakePhp 2x Is enabling helpers still needed?CakePhp 2x 是否还需要启用助手?
【发布时间】:2017-04-13 04:09:20
【问题描述】:

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

那么,如果它在不启用它的情况下工作,我为什么要启用它们?

【问题讨论】:

  • 在 Cakephp 2.x 中,表单、html 助手默认启用。

标签: php cakephp


【解决方案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

如果您需要为所有控制器启用帮助器,请将帮助器的名称添加到 /app/Controller/AppController.php 中的 $helpers 数组中(如果不存在,则创建它)。记得包含默认的 Html 和 Form 帮助器:

参考:CakePHP 2.x Helpers

【讨论】:

  • 谢谢!这很有意义。我试图在未经我同意的情况下查看它在哪里启用哈哈
【解决方案2】:

猜测您已经在 App Controller 中启用了这些帮助程序。由于 App 控制器在每个控制器中都进行了扩展,这就是为什么这些助手仍在为您工作的原因。

【讨论】:

  • 不,我没有在任何地方启用它们!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2012-02-08
  • 1970-01-01
相关资源
最近更新 更多