Contao 4.10:带有 fileTree 的 DCA 元字段

Contao 4.10: DCA metaFields with fileTree

我需要在文件管理中 link 图片和音频文件的可能性。 我遵循了本教程并创建了该字段,但仅作为一个简单的输入字段。 https://docs.contao.org/dev/reference/dca/fields/#meta-wizard-fields

然后我添加了一个标准的 DCA 设置

<?php
  $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields']['audiolink'] = [
     'inputType' => 'fileTree',
     'eval' => ['filesOnly' => true, 'fieldType' => 'radio', 'mandatory' => false],
     'sql' => ['type' => 'string', 'length' => 255, 'default' => ''],
  ];

但这不起作用。

有了这个我得到了页面树向导

<?php
 $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields']['audiolink'] = [
    'attributes' => 'maxlength="255"', 'dcaPicker' => true
 ];

然后我试了这个

<?php
  $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields']['audiolink'] = [
     'attributes' => 'maxlength="255"', 'fileTree' => true
  ];

但这也行不通。那么如何让“fileTree”向导在文件管理中工作呢?

你不能,元向导仅支持 text 字段(以及自 Contao 4.9.10 以来的 textarea 字段)。

您可以向 tl_files 添加一个附加字段,而不是使用 tl_files.meta

// contao/dca/tl_files.php
use Contao\CoreBundle\DataContainer\PaletteManipulator;

$GLOBALS['TL_DCA']['tl_files']['fields']['foobar'] = [
    'inputType' => 'fileTree',
    'eval' => ['filesOnly' => true, 'fieldType' => 'radio', 'mandatory' => false],
    'sql' => "binary(16) NULL"
];

PaletteManipulator::create()
    ->addField('foobar', null)
    ->applyToPalette('default', 'tl_files')
;

然而,这当然意味着您可以 select 这个文件只能按文件而不是按语言按文件。