如何在 PyroCMS 的 TableBuilder 中显示 Select 字段类型的值?

How to show the value of Select Field Type in PyroCMS's TableBuilder?

我有一个名为 type 的字段,它是一个 select field type。我在表单构建器的 select HTML element 中看到的是值而不是键,但是在 table 构建器中我只看到键而不是值。很明显,它们是如何从数据库派生的,但是是否有设置来切换它?我不想对此进行硬编码。我在文档中阅读了一些相关页面,但找不到为此的配置。

    protected $fields = [
        'type' => [
            'type' => 'anomaly.field_type.select',
            'config' => [
                'options'       => ['foo' => 'Foo', 'bar' => 'Bar'],
                'mode'          => 'dropdown'
            ]
        ]
    ];

selectFT 有

/* @var SelectFieldType $fieldType */
$fieldType = $entry->getFieldType('type');

$presenter = (new Decorator())->decorate($fieldType);

dd([
    'key'     => $presenter->key(),
    'value'   => $presenter->value(),
    'options' => $fieldType->getOptions(),
]);

此外,您可以像这样定义列:

/**
 * Table's columns
 *
 * @var array
 */
protected $columns = [
    'name' => [
        'heading' => 'Name',
        'value'   => '<strong>{entry.name}</strong>',
    ],
    'type' => [
        'heading' => 'Type',
    ],
    'categories' => [
        'heading' => 'Categories',
        'value'   => 'entry.type.categories.pluck("name")|join("<br>")',
    ],
];

您的 table 列值将如下所示:

protected $columns = [ 'type', // Shows the KEY value for select field types 'entry.type.value', // Would show the label value for select field type ];

请注意,您可以轻松访问 Presenter 方法,并通过在列中添加前缀 entry. 来保留自动字段操作。