iamntz / carbon-rest-multiselect
carbon rest 多选
3.0.3
2020-02-25 11:15 UTC
README
Prov
为 Carbon Fields 3 添加 rest_multiselect
字段类型。使用 Composer 进行安装。
composer require iamntz/carbon-rest-multiselect:^3.0
对于 Carbon Fields 2(旧版)
composer require iamntz/carbon-rest-multiselect:^2.0
用法
Field::make('rest_multiselect', 'my-name', 'My Label') ->set_endpoint( 'base', get_rest_url( null, 'wp/v2/posts' ) ) ->set_endpoint( 'search', get_rest_url( null, 'wp/v2/posts/?search=' ) ) ->set_endpoint( 'fetch_by_id', get_rest_url( null, 'wp/v2/posts/?include=' ) ) // endpoint used to look up for saved posts ->set_value_key('id') // the REST response key to use as a value in the select ->set_selection_limit(999) // what's the maximum amount of selectable items. ->set_label_key('title.rendered') // OR ->set_label_key(['date', 'title.rendered']) // the REST response key to use as a label in the select
所有 端点都是必需的!如果需要,您可以直接在端点 URL 中指定 nonces(或额外变量):get_rest_url( null, "wp/v2/posts/?nonce={$generated_nonce}&search=" )
set_label_key
这个功能非常灵活:您可以使用字符串、点分隔的字符串(这将搜索子项)或数组,这些数组将被组合成格式良好的字符串。
您还可以对标签设置一些转换
->set_label_key(['title.rendered|substring:0,10|toUpperCase', 'date|wrap(%label%)']);
基本上是任何可以在字符串上调用的 JS 原型函数。
有一个例外:您可以使用 wrap
转换,这将...嗯,包裹您的标签。
set_selection_limit
您可以设置最大可选择的项数。这将无限期地工作,没有限制或警告(就像常规的 HTML select
标签一样)。因此,任何新的选择都将附加到现有项目上,因此如果达到限制,则选择的第一项将被丢失,新元素将被附加。
基本上,如果您添加 ->set_selection_limit(1)
,则该字段将表现得就像一个常规的 HTML select
。
返回值
字段将 始终 返回一个包含项的数组,值通过 set_value_key('id')
方法选择的键来获取。
致谢
高度 受益于 @elvishp2006 的优秀插件。遗憾的是,无法扩展该插件以允许多选而不破坏兼容性(不同的存储等)。
支持我
许可证
代码在 MIT 许可下发布。