在CakePHP 3中为表分配人类可读且可动态检索的标题或别名

时间:2018-09-28 19:37:23

标签: cakephp cakephp-3.0

出于为CMS创建动态菜单的目的,我需要能够检索给定模型的关联,并且对于每个关联模型,都需要检索以人类可理解的形式表示它的字符串。因此,例如,如果我有一个包含许多Articles的{​​{1}}表,我可以通过

动态获取该关联信息

Hostedimages

但是,这给了我字符串$this->Articles->associations()->keys(),而对于UI,我当然想要Hostedimages

我假设我可以将此字符串存储在Hosted Images模型中的某个位置。有人知道如何实现吗?

1 个答案:

答案 0 :(得分:1)

keys()应该返回所有小写的名称IIRC,即hostedimages,这就是关联集合在内部使用它们以确保唯一性的方式。

当然可以为表对象分配一个值,但是一个表可以在多个关联中使用,这样就不能很好地工作,并且表也不需要了解任何有关表示层的信息。 / p>

理想情况下,您将遵循CakePHP命名约定并使用驼峰式命名,即为关联/表HostedImages命名,然后例如可以在关联名称上使用变形器:

$associations = $this->Articles->associations();
$readableNames = collection($associations)
    ->map(function (\Cake\ORM\Association $association) {
        return \Cake\Utility\Inflector::humanize(
            \Cake\Utility\Inflector::underscore($association->getName())
        );
    })
    ->toList();

另请参见