Комментарии 14
Обязательно пишите еще, интересно почитать, если даже в какой-то статье ничего полезного не найдется, то в следующей думаю, что-то да появится.
+4
это конечно удобно, но всё-таки запрос в базу при каждом выполнении приложения для таких редко меняемых настроек — стоит ли?
0
Ну во первых можно настроить кеширование, а во вторых — у многих приложений не так много пользователей, чтобы создать реальную нагрузку на сервер.
В нашем конкретном случае — приложение рассчитано на использование в локалке, пользователей — порядка 10-15. Как разница, 10 или 20 запросов к БД будет происходить при каждом обращении к приложению.
Ну и наконец, Вы же понимаете, что я описал именно пример того как можно использовать такую страничку. Ведь помимо редко меняемых, в приложении может быть ещё сотня-другая настроек, которые надо периодически менять. Согласны?
В нашем конкретном случае — приложение рассчитано на использование в локалке, пользователей — порядка 10-15. Как разница, 10 или 20 запросов к БД будет происходить при каждом обращении к приложению.
Ну и наконец, Вы же понимаете, что я описал именно пример того как можно использовать такую страничку. Ведь помимо редко меняемых, в приложении может быть ещё сотня-другая настроек, которые надо периодически менять. Согласны?
0
Да, и так можно сделать. Но есть другой вариант — вынести параметры в отдельный файл, подключаемый в конфиг, и редактировать с помощью этой формы сам файл параметров.
P.S. Я не говорю, что какой-то подход лучше — везде есть плюсы и минусы. Действительно, для 10-15 пользователей — это вообще не страшно. Запрос скорее всего будет закеширован на уровне базы и о дополнительном кеше думать не надо даже.
P.S. Я не говорю, что какой-то подход лучше — везде есть плюсы и минусы. Действительно, для 10-15 пользователей — это вообще не страшно. Запрос скорее всего будет закеширован на уровне базы и о дополнительном кеше думать не надо даже.
0
Как-то так. Единственное, что мне не нравится — это строка вызова метода get
Уж слишком она длинная. К сожалению придумать как её укоротить я пока не могу.
Через компонент.
Yii::app()->config->get('applicationName');
Я не понял два момента:
1. Зачем нужен отдельный модуль, когда конфигурация нужна для админки, когда админка сама является(скорей всего) модулем?
2. Зачем нужно было делать надстройку над AR и Gii? Gii уже сам генерирует отличные функционал, используя ActiveRecord.
0
1) Просто так удобнее было оформить код
2) Меньше шагов для добавления нового поля. Вместо создания нового поля в БД и перегенерации модели и вьюшек, его нужно лишь описать в двух файлах и всё мгновенно заработает.
2) Меньше шагов для добавления нового поля. Вместо создания нового поля в БД и перегенерации модели и вьюшек, его нужно лишь описать в двух файлах и всё мгновенно заработает.
0
Если это модулем, то просто создать в модуле метод get, чтобы получилось вот так
А код самого ConfigpageModule.php
Либо так:
Тогда код будет такой:
Yii::app()->getModule('configpage')->get('applicationName');
А код самого ConfigpageModule.php
class ConfigpageModule extends CWebModule
{
public function init()
{
$this->setImport(array(
'configpage.models.*',
'configpage.components.*',
));
}
public function beforeControllerAction($controller, $action)
{
if(parent::beforeControllerAction($controller, $action))
{
return true;
}
else
return false;
}
public function get($name)
{
$this->config->get($name);
}
}
Либо так:
ConfigpageModule::get('applicationName')
Тогда код будет такой:
public static function get($name)
{
Yii::app()->getModule('configpage')->config->get($name);
}
0
>>Так что кипящие в соседних топиках дискуссии о постоянной нехватке квалифицированных кадров — какая-то глупость.
В том то и проблема что таких «спецов» уйма, а нормальных мало.
В том то и проблема что таких «спецов» уйма, а нормальных мало.
+4
Если хотите реально сделать что-то полезное, то запилите crud для него через стд файлы конфигурации (чтобы в разных форматах можно было сохранять, например php array, yaml, xml, json), при этом не изобретите велосипед + добавьте версионность таких конфигов(например, dev, test, prod).
А еще надо бы релизить(packagist) все это, чтобы сообщество пользовалось Вашей наработкой. Возможно потом ее даже включат в стандартную поставку Yii, если там такого еще нет(я не слежу за этим фреймворком, в Sf2, например, есть такая страничка)
>>Так что кипящие в соседних топиках дискуссии о постоянной нехватке квалифицированных кадров — какая-то глупость.
Увы, я с Вами не согласен.
А еще надо бы релизить(packagist) все это, чтобы сообщество пользовалось Вашей наработкой. Возможно потом ее даже включат в стандартную поставку Yii, если там такого еще нет(я не слежу за этим фреймворком, в Sf2, например, есть такая страничка)
>>Так что кипящие в соседних топиках дискуссии о постоянной нехватке квалифицированных кадров — какая-то глупость.
Увы, я с Вами не согласен.
+1
Сделал нечто подобное, только работает не с базой, а с отдельным конфиг-файлом.
Т.е. делаем config-файл (например, params.php), в нём параметры, которые можно будет изменить при помощи этой модели:
В модели прописываем attributeLabels и всё. Метод save() сохраняет модель в файл (да, с форматированием и отступами), специальный form-builder строит форму на основе CForm или CActiveForm.
Если сообществу интересно, то могу поделиться
Т.е. делаем config-файл (например, params.php), в нём параметры, которые можно будет изменить при помощи этой модели:
<?php
return array(
'name' => 'Мой сайт',
'params' => array(
'adminEmail' => 'admin@example.com',
),
);
В модели прописываем attributeLabels и всё. Метод save() сохраняет модель в файл (да, с форматированием и отступами), специальный form-builder строит форму на основе CForm или CActiveForm.
Если сообществу интересно, то могу поделиться
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Простенькая страница настроек для Yii-приложения