Cakephp 视图助手

Cakephp View Helper

每当我在视图文件中显示用户名时,我都会使用:

echo $user['User']['name'];

用户 table 也有一个 'company_name' 字段。如果用户列出了公司名称(在大多数情况下,但不是全部),我想显示他们的公司名称(如果没有,我想使用 'name' 字段)。代码看起来像:

if(isset($user['User']['company_name']) && $user['User']['company_name'] != '') {
    echo $user['User']['company_name'];
} else {
    echo $user['User']['name'];
}

在多个视图文件中处理此问题的正确方法是什么?我应该为它创建一个助手吗?

由于这个特定的用例只是一小部分表示逻辑,因此在 Element 而不是 Helper 的范围内构建它对我来说更有意义。

现在,如果在未来的某个时间点(甚至现在)您决定要扩展更多类似于此表示逻辑的功能,可能以 UsersHelper 的形式定义各种显示与当前用户相关的逻辑,然后将该功能封装在 Helper 中是明智的。

这是一个很好的例子,可以帮助您开始使用 Elements:

// In src/Template/Element/name_display.ctp
if(isset($user['User']['company_name']) && $user['User']['company_name'] != '') {
    echo $user['User']['company_name'];
} else {
    echo $user['User']['name'];
}

在您的视图文件中:

// Echo this wherever you need the name displayed
echo $this->element('name_display', [
    'user' => $user // Sets the $user viewVar in the element
]);

为了完整起见,在您的控制器中:

$this->set('user', $user);

在业余时间,最好查看 Cake 中包含的一些核心助手的手册,了解它们的构造方式,以便更好地了解 Cake 中的用例你会想要创建一个助手。

2.x Elements Documentation

3.x Elements Documentation

2.x Helpers Documentation

3.x Helpers Documentation

祝你好运!