TCA选择中自定义列的值

时间:2016-03-16 11:39:47

标签: typo3 extbase

我在Typo3 TCA中创建了一个选择,它看起来像这样:

public int[] getTableData(DefaultTableModel model, Integer colIndex) {
    int nRow = model.getRowCount();
    int[] tableData = new int [nRow];

    for(int i = 0; i< nRow; i++) {
        tableData[i] = (int) model.getValueAt (i,colIndex);
    }
    return tableData;
}                                        

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
    int nRow = model.getRowCount();

    algorithm algo = new algorithm(getTableData(model, 1),getTableData(model, 2),
    Integer.parseInt(jTextField1.getText()),Integer.parseInt(jTextField2.getText()),Integer.parseInt(jTextField3.getText()));
    int[] result = algo.getResult();

    for(int i = 0; i < nRow; i++) {
        if(result[i]==1)
            model.setValueAt("take", i , 3);
        else
            model.setValueAt("leave", i, 3);
    }
}

默认值=记录的uid,如何更改?

我需要那个值= my_column。有可能吗?

1 个答案:

答案 0 :(得分:5)

您可以使用itemProcFunc构建您需要的选择选项。在您的TCA中,您可以更改配置:

'company_address' => array(
  'config' => array(
    'type' => 'select',
    'itemsProcFunc' => 'Vendor\\MyExt\\UserFunc\\TcaProcFunc->companyAddressItems'
    'maxitems' => 1
  )
)

然后您可以实现自定义功能。我给你举个例子

namespace Vendor\MyExt\UserFunc;
class TcaProcFunc
{   
    /**
     * @param array $config
     * @return array
     */
    public function companyAddressItems($config)
    {
        $itemList = [];
        $rows = $this->getMySpecialDokTypeRowsFromDb();
        foreach ($rows as $row) {
            $itemList[] = ['Label of the item', $row['my_column']];
        }
        $config['items'] = $itemList;
        return $config;
    }
}

您在$config['items']中存储的内容将是您选择框中的项目列表。要进行此(未经测试的)示例工作,您当然要实现方法getMySpecialDokTypeRowsFromDb()