Функция getColumnContent возвращает «строку» в GridField_ColumnProvider silverstripe 4 - PullRequest
0 голосов
/ 30 августа 2018

код реализован так,

class OrderViewGridFieldTechnicalHistoryViewButton implements GridField_ColumnProvider

если я вернусь

return $data->renderWith('TechnicalHistoryViewButton');

в файле ss я звоню вот так

$Up.getColumnContentByID($ID , 'TechnicalHistory')

Я получаю строку в качестве кода возврата, Любое предложение?

код для TechnicalHistoryViewButton

class OrderViewGridFieldTechnicalHistoryViewButton implements GridField_ColumnProvider
{

public function augmentColumns($field, &$cols)
{   
      if(!in_array('TechnicalHistory', $cols)) $cols[] = 'TechnicalHistory';
 }

public function getColumnsHandled($field)
{
    return array('TechnicalHistory');
}

public function getColumnContent($field, $record, $col)
{

    if ($record->canView()) {
        $data = new ArrayData(array(
            'Link' => PageController::join_links($field->Link('item'), $record->ID, 'vieworder'),
            'ColumnName' => $col
        ));
        return $data->renderWith('TechnicalHistoryViewButton');
    }
}

public function getColumnAttributes($field, $record, $col)
{
    return array('class' => 'col-buttons');
}

public function getColumnMetadata($gridField, $col)
{
    return array('title' => null);
}
}

код для TechnicalHistoryViewButton.ss

<div class="cms-custom-icon-block float _js-tool-tip">
    <a class="" href="$Link"></a>
    <div class='tool-tip-content' style="display:none"><span>View Technical History</span></div>
</div>

Вот как я использую поля этой сетки

<% with $Fields.fieldByName('OrderItems') %>
                            <div class='cms-custom-row'>
                                <% loop $getList %>
                                    $Up.getColumnContentByID($ID , 'TechnicalHistory')

                                    </div>
                                <% end_loop %>
                            </div>
                        <% end_with %>

Удлинитель для сетки

public function getColumnContentByID($ID, $column)
    {
        $record = $this->owner->getList()->byId($ID);
        return $this->owner->getColumnContent($record, $column);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...