每当我在视图文件中显示用户名时,我都会使用:
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'];
}
在多个视图文件中处理此问题的正确方法是什么?我应该为它创建一个帮助器吗?
答案 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附带的一些核心助手的手册,以了解它们是如何构建的,以便更好地了解您的用例想要创建一个助手。
祝你好运!