如何解决ListboxField 的 SilverStripe 显示逻辑不起作用
SilverStripe:v4
使用的模块:https://github.com/unclecheese/silverstripe-display-logic
你好,美好的一天!
我在安全页面(成员列表)中,并试图在某个字符串或值在另一个 ListboxField 上找到时显示 ListboxField。
通过上图,我想在组字段中选择或输入销售代表角色,一旦销售代表是出现在组中,那是我将显示另一个字段的时刻
这是我的代码片段
$codesList = Member::get()->column('Code');
$codes = ListboxField::create(
'AccountPurchases','Account Purchases',$codesList);
$fields->insertAfter('DirectGroups',$codes);
$codes->displayIf("DirectGroups")->contains("Sales Representative");
但问题是,无论我做什么(1: dev/build?flush=1,2: refresh the page,3: restart the app)所需的名为 $codes
的字段仍然不会出现.
但是如果我将它应用到像 FirstName 这样的普通字段(它是一个简单的 TextField),它工作得非常好......
$codesList = Member::get()->column('Code');
$codes = ListboxField::create(
'AccountPurchases',$codes);
$codes->displayIf("FirstName")->contains("Sales Representative");
任何想法如何执行我想要的输出?
解决方法
对于非标准表单字段,您需要使用显示逻辑包装器。 https://github.com/unclecheese/silverstripe-display-logic#dealing-with-non-standard-form-fields
“非标准”的定义有点难找,但根据我的经验,它是任何非普通 html-input 的东西。 Listbox 是一个花哨的前端东西,所以它是合格的。文档中的示例可能会令人困惑,但如果您使用的是 SS4 和最新的显示逻辑,则使用 Wrapper::create
而不是 DisplayLogicWrapper::create
。如果你包装它,它应该可以工作。
$codesList = Member::get()->column('Code');
$codes = Wrapper::create(
ListboxField::create('AccountPurchases','Account Purchases',$codesList);
)->displayIf("DirectGroups")->contains("Sales Representative")->end();
$fields->insertAfter('DirectGroups',$codes);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。