Pull to refresh

Comments 12

Не совсем понятно зачем так все усложнять. Как для личного опыта это конечно хорошо, но вот я бы это реализовал намного проще, легче и быстрее.
Я бы добавил к основному контроллеру статическую функцию которая занималась бы как раз тем что вам нужно. Например она возвращала бы этот самый массив Controller::getSiteSettings(); далее, только что набросанный код:

public static function getSiteSettings()
{
$arr = Yii::app()->cache->get('siteSettings');
if($arr === false)
{
$arr = array();// идем или в базу или читаем с файла то что нужно, + я бы все это сериализировал

Yii::app()->cache->set('siteSettings', $arr);
}

return $arr;
}

Хорошо, рассмотрим этот пример.

Допустим, настройки лежат в БД. А что Вы будете делать если администратору нужно отредактировать настройки подключения к базе?
А если здесь подключается файл, то смысла от этого нет, ибо изначально можно все параметры захардкодить в конфиге.

Суть моего подхода в том, что мы получим конфигурационный файл самым родным для Yii путём до инициализации приложения. Единственное ограничение: одна форма — один файл конфигурации.

Приведу пример. Такая структура:
— config
|-- main.php
|-- cli.php
|-- web.php
|-- params.php

А в main.php находится:
return CMap::mergeArray(array(
// здесь core-конфигурация
), require(dirname(__FILE__) . '/params.php')); // подключаем конфигурацию, которая может изменяться из админки


Но вообще, да, можно считать это небольшой разминкой для мозгов
«А что Вы будете делать если администратору нужно отредактировать настройки подключения к базе?»
Не знаю зачем администратору это нужно, как по мне то настройки подключения к БД нужны только разработчику. Если же вы измените уже существующие настройки подключения то у вас упадет сайт. В вашем случаи все параметры «params» типа телефон, мыло и прочее вы тащите по всему сайту, а нужно вам это только в нескольких случаях.
Не знаю зачем администратору это нужно, как по мне то настройки подключения к БД нужны только разработчику
Неудачный пример, но суть я раскрыл
В вашем случаи все параметры «params» типа телефон, мыло и прочее вы тащите по всему сайту, а нужно вам это только в нескольких случаях.
Согласен, это минус. Однако, иногда они используются для вывода в шаблоне, так что в некоторых случаях Yii::app()->params нужен при каждом рендере
p.s. подскажите неуку почему код не подсветился и потерял формат? использовал тэг source
Это называется — окончательно попрощайтесь с безопасностью проекта.
Отнюдь. Добавить корневой атрибут невозможно. Так же можно прикрутить валидацию элементов массива, чтобы нельзя было создать дополнительные директивы (не сложно). Я не стал этого делать, ибо администратор — сам владелец сайта. Степень доверия высокая, фигню инжектить не будет.
UFO just landed and posted this here
Да, эта модель облегчает работу с такими файлами. Как Вы производите редактирование конфигурации?
UFO just landed and posted this here
Sign up to leave a comment.

Articles