В функцию getDatasetConfiguration() не передается параметр
В ядре umi.cms есть такой фрагмент кода:
/**
* Возвращает настройки табличного контрола
* @param string $param контрольный параметр (чаще всего - название текущей вкладки
* административной панели)
* @return array
*/
public function getDatasetConfiguration($param = '') {
return [
'methods' => [
...
],
'default' => 'name[400px]'
];
}
В системных модулях передается этот параметр и в зависимости от него формируется вывод. Но когда я пишу эту функцию в своем модуле, $param всегда равен null. Проверял вот таким способом:
public function getDatasetConfiguration($param = '')
{
if ($param === null) {
return [
'methods' => [
[
'title' => getLabel('smc-load'),
'forload' => true,
'module' => 'testModuleUnika',
'#__name' => 'objects'
]
],
'default' => 'name[400px]'
];}}
Как мне получить / где передать этот параметр?
На сколько я понимаю, вызов происходит другой системной функцией:
private function getDataSetConfig($type = null) {
$type = $type ?: getRequest('param');
$allowedModuleList = (array) cmsController::getInstance()
->getCurrentModule();
/** @var umiEventPoint|iUmiEventPoint $event */
$event = Service::EventPointFactory()
->create('dataset_config', 'before', $allowedModuleList)
->setMode('before')
->setParam('type', $type);
$event->call();
$datasetConfig = $this->getDatasetConfiguration($event->getParam('type'));
$event->setMode('after')
->setParam('config', $datasetConfig)
->call();
return $event->getParam('config');
}
Без переопределения в своем модуле, данные не выводятся вовсе.
Ответы (1 шт):
Нашел ответ. Как раз был вопрос в присвоении значения, место присвоения было не очевидным для меня, а на umi help не нашел такой информации. Пришлось для того, чтобы найти ответ, сломать один из системных модулей.
По итогу нужно при создании верстки для шаблона передать данный параметр подобной строкой:
<xsl:with-param name="control-params" select="$method" />
Пример полной верстки:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://common/dummy">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="result[@method = 'pages']/data">
<div class="layout">
<div class="column">
<xsl:call-template name="ui-smc-table">
<xsl:with-param name="control-params" select="$method" />
</xsl:call-template>
</div>
</div>
</xsl:template>
</xsl:stylesheet>