'@app/views/layouts/base.php', * 'params' => [], * 'view' => $this, * ]) ?> * * some content here * * * ``` * * There are [[\yii\base\View::beginContent()]] and [[\yii\base\View::endContent()]] wrapper methods in the * [[\yii\base\View]] component to make syntax more friendly. In the view these could be used as follows: * * ```php * beginContent('@app/views/layouts/base.php') ?> * * some content here * * endContent() ?> * ``` * * @author Qiang Xue * @since 2.0 */ class ContentDecorator extends Widget { /** * @var string the view file that will be used to decorate the content enclosed by this widget. * This can be specified as either the view file path or [path alias](guide:concept-aliases). */ public $viewFile; /** * @var array the parameters (name => value) to be extracted and made available in the decorative view. */ public $params = []; /** * Starts recording a clip. */ public function init() { parent::init(); if ($this->viewFile === null) { throw new InvalidConfigException('ContentDecorator::viewFile must be set.'); } ob_start(); ob_implicit_flush(false); } /** * Ends recording a clip. * This method stops output buffering and saves the rendering result as a named clip in the controller. */ public function run() { $params = $this->params; $params['content'] = ob_get_clean(); // render under the existing context echo $this->view->renderFile($this->viewFile, $params); } }