使用Cake烘焙时更改视图中某些字段的显示方式

时间:2014-03-05 19:08:29

标签: php cakephp

app/Console/MyTheme/view.ctp中,我有这个片段:

if ($isKey !== true) {
    echo "\t<dt><?php echo __('" . Inflector::humanize($field) . "'); ?></dt>\n";
    echo "\t<dd><?php echo h(\${$singularVar}['{$modelClass}']['{$field}']); ?>&nbsp;</dd>\n";
}

我可以随意使用某些东西来确定正在使用的字段类型吗?从本质上讲,我希望能够做到这样的事情:

if ($isKey !== true) {
    echo "\t<dt><?php echo __('" . Inflector::humanize($field) . "'); ?></dt>\n";
    if($field['type'] == 'Something')
        //do something here
    else
        echo "\t<dd><?php echo h(\${$singularVar}['{$modelClass}']['{$field}']); ?>&nbsp;</dd>\n";
}

目标将检测tinyint(1)并显示&#34;是&#34;或&#34;否&#34;烤的时候。或者这个功能是否已经存在?

编辑#1

我刚刚想到我的布尔字段都以&#34为前缀,是_&#34;。我可以做这样的事情:

if ($isKey !== true) {
    echo "\t<dt><?php echo __('" . Inflector::humanize($field) . "'); ?></dt>\n";
    if(strpos($field, "is_") !== false)
        echo "\t<dd>Yes or No</dd>\n";
    else
        echo "\t<dd><?php echo h(\${$singularVar}['{$modelClass}']['{$field}']); ?>&nbsp;</dd>\n";
}

编辑#2

这在某种程度上有效:

if ($isKey !== true) {
            echo "\t<dt><?php echo __('" . Inflector::humanize($field) . "'); ?></dt>\n";
            if(strpos($field, "is_") !== false)
                echo "\t<dd><?php echo \${$singularVar}['{$modelClass}']['{$field}'] ? 'Yes' : 'No'; ?></dd>\n";
            else
                echo "\t<dd><?php echo h(\${$singularVar}['{$modelClass}']['{$field}']); ?>&nbsp;</dd>\n";
    }

1 个答案:

答案 0 :(得分:0)

这似乎是我所寻找的(因为我所有的布尔字段都以“is _”为前缀):

if ($isKey !== true) {
            echo "\t<dt><?php echo __('" . Inflector::humanize($field) . "'); ?></dt>\n";
            if(strpos($field, "is_") !== false)
                echo "\t<dd><?php echo \${$singularVar}['{$modelClass}']['{$field}'] ? 'Yes' : 'No'; ?></dd>\n";
            else
                echo "\t<dd><?php echo h(\${$singularVar}['{$modelClass}']['{$field}']); ?>&nbsp;</dd>\n";
    }