iamntz/carbon-rest-multiselect

carbon rest 多选

3.0.3 2020-02-25 11:15 UTC

This package is auto-updated.

Last update: 2024-09-28 07:39:17 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 的优秀插件。遗憾的是,无法扩展该插件以允许多选而不破坏兼容性(不同的存储等)。

支持我

您可以通过托管捐赠或成为我的Patreon来支持我。

许可证

代码在 MIT 许可下发布。