Cakephp查看助手

时间:2015-05-08 18:45:09

标签: cakephp

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

由于这个特定的用例是如此少的表示逻辑,因此在Element而不是帮助程序的范围内构建它会更有意义。

现在,如果在某个时刻(或者现在甚至),您决定有更多功能要扩展,类似于此表示逻辑,可能采用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附带的一些核心助手的手册,以了解它们是如何构建的,以便更好地了解您的用例想要创建一个助手。

2.x Elements Documentation

3.x Elements Documentation

2.x Helpers Documentation

3.x Helpers Documentation

祝你好运!