protected function resolveStyleFile(View $view) { $stylePath = sprintf('%s/%s', $view->getTemplatePath(), self::PATH_STYLE); if (!is_dir($stylePath)) { return false; } $assetPath = $this->publishStyle($stylePath); $assetStyleFile = sprintf('%s/%s', $assetPath, self::FILENAME_STYLE); return $assetStyleFile; }
protected function getDependents(View $view) { $widgetsIds = array(); foreach (array_reverse($view->getWidgets()) as $widgetClass => $widgets) { /** @var Widget $widget */ foreach ($widgets as $widget) { $scriptFile = sprintf('%s%s', $widget->getView()->getTemplatePath(), self::EXTENSION_SCRIPT); $isAppend = $this->appendScriptFile($widget->getView()->getId(), $scriptFile); $isAppend && ($widgetsIds[$widget->getName()] = array('name' => $widget->getView()->getId(), 'params' => $widget->getView()->getJsParams(), 'dependents' => $this->getDependents($widget->getView()))); } } return $widgetsIds; }
public function renderFile($context, $sourceFile, $params, $isReturn) { $templatePath = $this->resolveTemplatePath($sourceFile); $viewId = $this->generateViewId($templatePath); $view = new View($viewId, $context); $view->setTemplatePath($templatePath); $view->setParams($params); $isContextWidget = $this->isContextWidget($context) && $context->setView($view); $isAjaxRequest = !$isContextWidget && $this->isAjaxRequest(); $responseParams = array(); foreach ($this->getViewProcessorsClasses() as $viewProcessorClass) { /** @var \PetrGrishin\View\ViewProcessor\BaseViewProcessor $viewProcessor */ $viewProcessor = new $viewProcessorClass($view); $viewProcessor->setIsAjaxMode($isAjaxRequest); $viewProcessor->processView(); $responseParams = array_merge($responseParams, $viewProcessor->getParams()); } if ($isReturn) { return $this->renderResponse($responseParams, $isAjaxRequest); } echo $this->renderResponse($responseParams, $isAjaxRequest); }