cakephp自定义类还是帮手?

时间:2012-08-19 23:30:33

标签: php cakephp

我目前有一个正在运行的作家MVC。我有一个名字和姓氏属性。在索引上我想显示全名。我知道这可以通过几种方式完成。

我可以在视图中编写逻辑

echo $writer['Writer']['firstname'] . " " . $writer['Writer']['lastname'];

我可以编写一个辅助函数来执行此操作并保持视图清洁。这就是我目前的做法。

echo fullName($writer['Writer']['firstname'], $writer['Writer']['lastname']);

我想知道创建一个具有fullname方法的writer类是否更好。然后我可以更多地简化我的观点。

echo $writer->fullname

所以,我知道如何编写帮助程序,这是有效的,假设构建一个类是要走的路,什么时候是在查询实例化每个对象之后的正确时间?我假设在控制器中。此外,我的班级将在哪里居住?

2 个答案:

答案 0 :(得分:2)

另一种方法是在Writer模型中创建一个虚拟字段:

public $virtualFields = array(
    'full_name'=>"CONCAT(Writer.first_name, ' ', Writer.last_name)"
);

输出:

echo h($writer['Writer']['full_name']);

答案 1 :(得分:0)

View/Helper/中创建帮助器CustomHelper(您喜欢的任何内容)。 然后是一个方法fullName:

 public function fullName($writer) {
    return $writer['first_name'] . ' ' . $writer['last_name'];
 }

// in your view
echo h($this->Custom->fullName($writer['Writer']));

您也可以在find()上设置格式化行为。 这取决于你将要使用它的位置。如果它只与视图相关,那么助手就足够了。如果在控制器/模型级别需要它,您可能希望使用模型层进行连接。