编程语言
首页 > 编程语言> > php-SilverStripe 4.3.1-将默认布尔值从SS 4.2.1转换为Yes或No

php-SilverStripe 4.3.1-将默认布尔值从SS 4.2.1转换为Yes或No

作者:互联网

我已经成功创建了一个图库登录页面,该页面会将指定的子相册封面图像拉到自身.这在SS 4.2.1中可以完美地工作,然后我创建了一个新的SS 4.3.1,并复制了所有模板.除此图库外,其他所有东西都在工作.当我在管理界面中时,可以单击图库页面,并且没有错误消息,但是当我单击子相册页面时,会出现以下错误:

[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中,我有一个布尔值,下面将其转换为Yes或No,但我不确定如何解决它.

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

在此先感谢您的浏览.

最好的祝福,
林恩

解决方法:

我们可以使用布尔尼斯函数来返回一个好的布尔值版本.使用以下内容,然后从类中删除自定义Cover()函数.

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

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

标签:silverstripe,silverstripe-4,php
来源: https://codeday.me/bug/20191211/2106127.html