【问题标题】:SilverStripe 4.3.1 - Convert default boolean value to Yes or No from SS 4.2.1SilverStripe 4.3.1 - 将默认布尔值从 SS 4.2.1 转换为 Yes 或 No
【发布时间】:2019-02-22 21:53:47
【问题描述】:

我已经成功创建了一个画廊登陆页面,该页面将指定的子专辑封面图片拉到自身。这在 SS 4.2.1 中完美运行然后我创建了一个新的 SS 4.3.1 并复制了所有模板。除了这个画廊,一切都在工作。当我在管理界面中时,我可以单击图库页面并且没有错误消息,但是当我单击子 AlbumPage 页面时,我收到以下错误:

[Emergency] Uncaught Error: Call to a member function scaffoldSearchField() 
on string
GET /bubbleshop/admin/pages/edit/show/48
Line 2249 in /var/www/silverstripe/bubbleshop/vendor/silverstripe/framework/src/ORM/DataObject.php

Source
2240 
2241                 // Otherwise we have a bug
2242                 } else {
2243                     user_error("Bad value for searchable_fields, 
'field' value: "
2244                         . var_export($spec['field'], true), 
E_USER_WARNING);
2245                 }
2246 
2247             // Otherwise, use the database field's scaffolder
2248             } elseif ($object = $this->relObject($fieldName)) {
2249                 $field = $object->scaffoldSearchField();
2250             }
2251 
2252             // Allow fields to opt out of search
2253             if (!$field) {
2254                 continue;
2255             }

我已设法识别导致错误的代码。在私有静态 $summary_fields 中,我有一个布尔值,下面将其转换为是或否,但我不知道如何修复它。

public function Cover(){
        return ($this->Cover==true ? 'Yes' : ' ');
    }

提前感谢您查看。

最好的问候, 林恩

【问题讨论】:

  • 在 Silverstripe 升级后我遇到了同样的错误。您如何确定导致问题的确切代码?
  • 我用最新的 SS 构建了一个新实例。然后我慢慢开始迁移我的模板,看看哪些有效,哪些无效。然后,画廊。我的克星。我不知道为什么会发生这个错误,所以我开始将每个元素重建到我的模板中,确保它在继续之前工作,然后最后一段代码导致了错误。一旦我删除它,一切都按预期工作。花了几个小时。我希望这对你也有帮助。干杯!

标签: php silverstripe silverstripe-4


【解决方案1】:

我们可以使用Boolean Nice 函数来返回一个很好的布尔值版本。使用以下内容并从您的类中删除自定义 Cover() 函数。

private static $summary_fields = [
    'Cover.Nice',
];

private static $field_labels = [
    'Cover.Nice' => 'Cover',
];

【讨论】:

  • 非常感谢您的帮助。祝你有美好的一天!
猜你喜欢
  • 2017-08-15
  • 2019-09-03
  • 2012-08-21
  • 1970-01-01
  • 2020-04-10
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多