public function saveWidgets($model) { if (isset($_POST['widgets'])) { foreach ($model->layout_widgets as $lw) { if (!array_key_exists($lw->id, $_POST['widgets'])) { $lw->delete(); } } $count = count($_POST['widgets']); foreach ($_POST['widgets'] as $index => $widget) { if ($index == 'copyMe') { continue; } $layoutWidget = SystemLayoutsWidgets::model()->findByPk($index, 'layout_id = :layout_id', array(':layout_id' => $model->id)); if ($layoutWidget) { $layoutWidget->attributes = $widget; $layoutWidget->save(); } else { $newLayoutWidget = new SystemLayoutsWidgets(); $newLayoutWidget->attributes = $widget; $newLayoutWidget->layout_id = $model->id; $newLayoutWidget->save(); } } } }
public function runLayout($position) { $route = $this->module->id . "/" . $this->id . "/" . $this->action->id; $layout = SystemLayouts::model()->orderById()->find(':route LIKE route', array(':route' => $route)); $layoutWidgets = SystemLayoutsWidgets::model()->sort()->findAll('layout_id = :layout_id AND position = :position', array(':layout_id' => $layout->id, ':position' => $position)); foreach ($layoutWidgets as $layoutWidget) { $widget = $layoutWidget->widget; if ($widget) { $this->widget($widget->class, $widget->getParams()); } } }