|
|
|
@ -13,6 +13,7 @@ use Yii;
|
|
|
|
|
use Smarty; |
|
|
|
|
use yii\base\View; |
|
|
|
|
use yii\base\ViewRenderer; |
|
|
|
|
use yii\helpers\Html; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* SmartyViewRenderer allows you to use Smarty templates in views. |
|
|
|
@ -48,6 +49,34 @@ class SmartyViewRenderer extends ViewRenderer
|
|
|
|
|
$this->smarty = new Smarty(); |
|
|
|
|
$this->smarty->setCompileDir(Yii::getAlias($this->compilePath)); |
|
|
|
|
$this->smarty->setCacheDir(Yii::getAlias($this->cachePath)); |
|
|
|
|
|
|
|
|
|
$this->smarty->registerPlugin('function', 'path', array($this, 'smarty_function_path')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Smarty template function to get a path for using in links |
|
|
|
|
* |
|
|
|
|
* Usage is the following: |
|
|
|
|
* |
|
|
|
|
* {path route='blog/view' alias=$post.alias user=$user.id} |
|
|
|
|
* |
|
|
|
|
* where route is Yii route and the rest of parameters are passed as is. |
|
|
|
|
* |
|
|
|
|
* @param $params |
|
|
|
|
* @param \Smarty_Internal_Template $template |
|
|
|
|
* |
|
|
|
|
* @return string |
|
|
|
|
*/ |
|
|
|
|
public function smarty_function_path($params, \Smarty_Internal_Template $template) |
|
|
|
|
{ |
|
|
|
|
if(!isset($params['route'])) { |
|
|
|
|
trigger_error("path: missing 'route' parameter"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
array_unshift($params, $params['route']) ; |
|
|
|
|
unset($params['route']); |
|
|
|
|
|
|
|
|
|
return Html::url($params); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -67,6 +96,10 @@ class SmartyViewRenderer extends ViewRenderer
|
|
|
|
|
$ext = pathinfo($file, PATHINFO_EXTENSION); |
|
|
|
|
/** @var \Smarty_Internal_Template $template */ |
|
|
|
|
$template = $this->smarty->createTemplate($file, null, null, $params, true); |
|
|
|
|
|
|
|
|
|
$template->assign('app', \Yii::$app); |
|
|
|
|
$template->assign('this', $view); |
|
|
|
|
|
|
|
|
|
return $template->fetch(); |
|
|
|
|
} |
|
|
|
|
} |