lekoala / silverstripe-modular-behaviour
在 SilverStripe 中使用 modular-behaviour.js
dev-master
2023-08-10 15:02 UTC
Requires
- php: ^7.4 || ^8
- silverstripe/assets: ^1.6 || ^2
- silverstripe/framework: ^4 || ^5
- silverstripe/versioned: ^1.6 || ^2
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-10 17:24:39 UTC
README
简介
允许在 Silverstripe 中使用 modular-behaviour。
ModularBehaviour 是一个工具,可以帮助您将行为绑定到特定的 HTML 节点。因此,它与 entwine 的工作方式相似,但由于在前端强制使用 entwine 并非总是可行,它可以在前端和后端独立且一致地工作。
如何使用
简单地扩展 ModularFormField
而不是 FormField
。如果不行,可以简单地使用 ModularBehaviour
特性。这个模块主要是针对 FormFields 构建的,但它也应该适用于小部件等。
然后可以根据需要覆盖任何内置方法
- getModularManual
- getModularSrc
- getModularSelector
- getModularFunc
- getModularName
- getModularConfig
- getModularConfigName
请参阅 phpdoc 以获取详细用法。
以下是一个示例
class MyModularField extends ModularFormField { public function getModularName() { return 'MyApp.MyModularField'; } public function getModularSelector() { return '.my-modular-field'; } public function getModularConfigName() { return str_replace('-', '_', $this->ID()) . '_config'; } public function getModularConfig() { $script = $this->getInitScript(); $configName = $this->getModularConfigName(); $script = "var $configName = $script"; return $script; } }
延迟加载
使用 modular-behaviour 包装的表单字段可以延迟加载(当用于长页面或标签页时非常有用)。
只需调用 setModularLazy
并传递 true
即可,它应该会神奇地工作。
动态源
您还可以(如果需要,延迟)加载源脚本,而不是依赖于 requirements api。
只需覆盖 getModularSrc
以返回包含构造函数的公共路径 js 文件。
ESM 注意
由于通过 globalEval 加载的 ajax 脚本不支持 esm 模块(未识别到导出),因此最小文件使用 iife 构建。
兼容性
与 ^4.10 测试过,但应该适用于任何 4.x 项目
维护者
LeKoala - thomas@lekoala.be