嗨,我想让蛋糕在档案标准中显示全名。我需要以“LASTNAME Firstname”格式显示名称,姓氏全部大写,名字的第一个字母大写。我的模型中有 first_name 和 last_name 并设法通过虚拟字段将它们组合在一起,但是在使用两个不同的 caps mods 时遇到了问题。
谢谢,麻烦您了。
嗨,我想让蛋糕在档案标准中显示全名。我需要以“LASTNAME Firstname”格式显示名称,姓氏全部大写,名字的第一个字母大写。我的模型中有 first_name 和 last_name 并设法通过虚拟字段将它们组合在一起,但是在使用两个不同的 caps mods 时遇到了问题。
谢谢,麻烦您了。
在您的 afterfind 回调中: strtoupper(lastname) 和 ucfirst(strtolower($firstname)) 或者您可以在您的 beforesave 中执行此操作并将这样的字段保存在您的数据库中。
或者正如马克所建议的那样:为什么不在你的观点中这样做呢?
public $virtualFields = array(
'vf_full_name' => 'CONCAT(UPPER(`last_name`), " ", UPPER(SUBSTRING(`first_name`, 1, 1)), LOWER(SUBSTRING(`first_name`, 2)))',
);
在你看来这样做。以这种格式将数据保存在数据库中只会导致将来令人头疼。例如,如果您以全大写格式(“DIMAGGIO”)保存姓氏“DiMaggio”,则不能将其转换为全小写并将第一个字母大写;这给了你“Dimaggio”,这是错误的。
正如我所说,只要按照你的观点去做。名字和姓氏是分开的,这很棒。
<p class="name">
<span class="last-name"><?php echo h($user['User']['last_name']); ?></span>,
<span class="first-name"><?php echo h($user['User']['first_name']); ?></span>
</p>
我还将姓氏转换为大写的 CSS 而不是 HTML,这更具语义。
.last-name {
text-transform: uppercase;
}
strtoupper()
更改 CSS 规则比浏览视图文件和删除包含在函数调用中的字符串更容易。