使用datagridConfig addColumn方法在DatagridListener中忽略了OROCRM Datagrid单元模板

问题描述

我有一个OROCRM应用程序,并且有一个数据网格,需要使用以userNames命名的列进行扩展,并打算在自定义树枝单元格中显示数据。

为此,我制作了一个DataGridListener类,并在其中添加了扩展列的方法

/**
     * Creates specific column names for selected persons
     *
     * @param Datagrid $datagrid
     * @param array    $persons
     *
     * @return array
     */
    protected function addColumnsForPersons(Datagrid $datagrid,array $persons): array
    {
        $config = $datagrid->getConfig();
        $additionalColumns = [];
        foreach ($persons as $person) {
            $column = [
                        'label'         =>  $person->getName(),'template'      =>  'MyBundle:Partials/Datagrid/Attendance:person_attendance.html.twig','type'          =>  'twig','frontend_type' =>  'html','data_name'     =>  'person_' . $person->getId(),'data'          =>  'person_' . $person->getId(),'translatable'  =>  false,'editable'      =>  false,'align'         =>  'middle'
                    ];

          $config->addColumn('person_' . $person->getId(),$column);
            $additionalColumns[] = 'person_' . $person->getId();
        }
        return $additionalColumns;
    }

我还通过以下方式为人添加数据:

$wrapperData = $datagrid->getData();
foreach($attendancesAtDay as $attendance) {
    // This block can be changed to a workaround
    $dayData['person_' . $attendance['personid']] = (object)([
                                                              'arrival'   =>  Carbon::createFromFormat('Y-m-d G:i:s',$attendance['arrival'])->format('H:i'),'leave'     =>  Carbon::createFromFormat('Y-m-d G:i:s',$attendance['leave'])->format('H:i'),'logins'    =>  $attendance['logins'],'worktime'  =>  gmdate('H:i',$attendance['worktime'] * 60)
                                                             ]);
}
$gridData[] = $dayData;
$wrapperData->setData($gridData);

模板是可访问的,PHPStorm可以遵循其引用链接,如下所示:

<div>
    <div style="width:40px">
        {{  value.worktime }}
    </div>
    <div style="width:40px">

        {{  value.arrival }}
    </div>
    <div style="width:40px">
        {{  value.leave }}
    </div>
    <div style="width:40px">
        {{  value.logins }}
    </div>
</div>

通过这种方法,我得到了以人员命名的列,但数据为空。使用xdebug,代码永远不会进入模板。

通过一些解决方法,如果我在foreach中更改该块,它将呈现所需的数据。

解决方法如下:

                $dayData['person_' . $attendance['personid']] = sprintf(
                    '<table>
                        <tr>
                            <td>
                                Worktime
                            </td>
                            <td>
                                Arrival
                            </td>
                            <td>
                                Leave
                            </td>
                            <td>
                                Logins
                            </td>
                        </tr>
                        <tr>
                            <td>
                                %s
                            </td>
                            <td>
                                %s
                            </td>
                            <td>
                                %s
                            </td>
                            <td>
                                %s
                            </td>
                        </tr>
                    </table>',gmdate('H:i',$attendance['worktime'] * 60),Carbon::createFromFormat('Y-m-d G:i:s',$attendance['logins']);

我尝试使用数组代替对象而不成功,或者在var / logs / dev.log中出现任何错误消息。 我想避免这种解决方法,想知道为什么在我将Booth Twig模板添加到列和HTML代码作为数据的情况下,为什么不抛出错误,为什么不运行到单元格模板中呢? 那我怎么了? 感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...