cakepp自定义类或助手


cakephp custom class or helper?

我目前有一个正在运行的编写器MVC。我有一个名字和姓氏属性。我想在索引上显示全名。我知道这可以通过多种方式来实现。

我可以在视图中写入逻辑

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

我可以编写一个助手函数来实现这一点,并保持视图的整洁。这就是我目前的做法。

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

然而,我想知道创建一个具有fullname方法的编写器类是否会更好。然后我可以进一步简化我的观点。

echo $writer->fullname

所以,我知道如何编写助手,假设构建一个类是可行的,那么在查询之后实例化每个对象的合适时间是什么时候?我假设在控制器中。此外,我的班级将住在哪里?

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

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

并输出:

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

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()上进行格式化行为。这取决于你将在哪里使用它。如果它只与视图相关,那么助手就足够了。如果您在控制器/模型级别需要它,您可能希望使用模型层进行连接。