【问题标题】:Dropdown missing some values下拉列表缺少一些值
【发布时间】:2012-07-24 12:47:23
【问题描述】:

我有一个运行良好的选择输入字段,但有些用户不在此列表中,尽管数据库看起来不错并且我没有条件。我将选项文本与 $virtualFields 结合起来,看起来像 $virtualFields = array( 'full_name_withTitle' => 'CONCAT(lastname, " ", firstname, " (", title, ")")'

虽然我的标题在括号中,但没有值的空行至少应该有“()”当没有值时。

该字段如下所示:

感谢任何提示

endo

【问题讨论】:

  • 我们能看到生成选项的代码吗?另外,如果是find('list'),你有没有把它改成find('all')并调试输出看看返回了什么记录?

标签: cakephp select concat form-fields


【解决方案1】:

虽然我的标题在括号中,但没有值的空行在没有值时至少应该有“()”

没有。如果一个参数为 null,则 CONCAT 返回 null。

CONCAT doc:

如果任何参数为 NULL,CONCAT() 将返回 NULL。

【讨论】:

    【解决方案2】:

    您应该在定义 virtualFields 时使用以下代码:

    $virtualFields = array( 'full_name_withTitle' => 'CONCAT(IF(lastname IS NULL '', lastname), " ", IF(firstname IS NULL, '', firstname), " (", IF(title IS NULL, '', title), ")")'
    

    This link 会帮助你。

    【讨论】:

      【解决方案3】:

      另一种可能是你有字符编码问题,也许你的数据库字段有非 UTF8 编码的字符串,但 PHP/CakePHP 需要 UTF8。特别是 htmlspecialchars()(或 Cake 的 h(),它会包装),will silently output an empty string 如果发现无效字符。

      解决此类问题有时会很棘手,因为字符编码不可见。如果整个数据库很小且非 UTF8,有时最简单的方法是将数据库转储为 SQL,使用编辑器或命令行工具进行转换,然后重新导入数据库。一些快速搜索发现了一些关于该主题的 possibly useful 帖子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多