public function run()
{
Url::remember('', $this->generateKey());
// create temporary file
$model = $this->_model;
$twigCode = $model ? $model->value : null;
$tmpFile = \Yii::getAlias('@runtime') . '/' . md5($twigCode);
file_put_contents($tmpFile, $twigCode);
$render = new ViewRenderer();
try {
$html = $render->render('renderer.twig', $tmpFile, []);
} catch (\Twig_Error $e) {
\Yii::$app->session->addFlash('warning', $e->getMessage());
$html = '';
}
if (\Yii::$app->user->can(self::ACCESS_ROLE)) {
$link = Html::a('prototype module', $model ? $this->generateEditRoute($model->id) : $this->generateCreateRoute());
if ($this->enableFlash) {
\Yii::$app->session->addFlash($html ? 'success' : 'info', "Edit contents in {$link}, key: <code>{$this->generateKey()}</code>");
}
if (!$model && $this->renderEmpty) {
$html = $this->renderEmpty();
}
}
\Yii::trace('Twig widget rendered', __METHOD__);
return $html;
}