/** * Попытка загрузить контрол, файл для которого есть, но нету исключения * @expectedException CConfigException */ public function testLoadControlWhenClassNotExists() { CConfigControlManager::loadControl('failed_to_load'); }
/** * Добавляет в текущий конфиг новый контрол * @param string $name * @param string $xtype * @param string $title * @param mixed $value * @param array $additionalConfig */ public function addControl($name, $xtype, $title, $additionalConfig = array(), $value = null) { try { $this->searchControlByName($name); $notFound = false; } catch (CConfigException $e) { $notFound = true; } // Если контрол уже есть, бросаем исключение if (!$notFound) { throw new CConfigException('Control with name="' . $name . '" already exists'); } $sql = 'INSERT INTO `%s` SET `schemaId`="%d",`tabId`="0",`name`="%s",`xtype`="%s",`title`="%s",`value`="",`config`="%s",`order`="%d"'; $sql = sprintf($sql, CCONFIG_CONTROL_TABLE, $this->id, \Faid\DB::escape($name), \Faid\DB::escape($xtype), \Faid\DB::escape($title), !empty($additionalConfig) ? \Faid\DB::escape(serialize($additionalConfig)) : '', sizeof($this->controls) + 1); DB::post($sql); $id = DB::$connection->insert_id; // // Вызываем after create у контрола $class = CConfigControlManager::loadControl($xtype); call_user_func(array($class, 'afterCreate'), $additionalConfig, $name, $value, $title); // $control = CConfigControlManager::createControl($id, $name, $xtype, $title, $additionalConfig, $value, $this); $control->setValue($value); $this->loadControls(); return $control; }
/** * Данный метод вызывает форму редактирования доп. полей у контролов * @param string $xtype */ public function getAdminForm($xtype) { $class = CConfigControlManager::loadControl($xtype); print call_user_func(array($class, 'outputAdminForm')); die; }