Как настроить конкретную конфигурацию сайта против конфигурации приложения в Zend Framework? - PullRequest
0 голосов
/ 13 июня 2010

Будучи довольно новым для Zend Framework, я читал и пробовал различные учебники в Интернете и книги, которые я купил. Одна вещь, которую делают все учебники, это жестко запрограммировать определенные значения в загрузочный или другой код. Например, установка заголовка:

$ это -> _ view-> headTitle ( 'MySite');

Я понимаю, что это можно установить в файле application.ini, но я не думаю, что это также подходит, если вы распространяете приложение на другие сайты.

Мне было бы интересно услышать идеи, когда специфичные для приложения настройки устанавливаются в файле application.ini и загружаются:

$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH.'/configs/application.ini'
);

Затем где-то в начальной загрузке, проверяя файл config.ini и добавляя их в существующий в настоящее время массив конфигурации приложения, и, если config.ini не существует, извлекаем такие специфичные для сайта настройки из базы данных и записываем файл config.ini (Очевидно, что файл удаляется и переписывается, если значение изменяется в базе данных). Мне не нужно видеть, как пишется файл или нет ... просто общее представление о том, как другие обрабатывают такие вещи. Или предоставить разные идеи сделать это?

Я бы предпочел использовать что-то подобное при настройке различных конфигураций сайта:

$this->_view->headTitle($config->site->title);

Надеюсь, это имеет смысл: -)

Ответы [ 3 ]

1 голос
/ 13 июня 2010

в view_script.phtml

$this->headTitle()->prepend($config->site_title);

где проблема?

1 голос
/ 14 июня 2010

Это немного зависит от того, какие данные вы хотите использовать в ваших конфигурационных файлах и как вы повторно используете ваше приложение на разных сайтах.

Хотя это нормально, чтобы передать имя файла в ваш конфигурационный файл в качестве второго параметрав Zend_Application вы также можете передать объект Zend_Config.Сам Zend_Config позволяет очень легко объединить несколько конфигурационных файлов, поэтому в вашем public / index.php вы можете сделать что-то вроде этого:

$defaultConfigFilename = APPLICATION_PATH . '/configs/application.ini';
$siteConfigFilename = APPLICATION_PATH . '/configs/site.ini';

// Create config object, using site-specific data if available
$config = new Zend_Config_Ini($defaultConfigFilename, null, true);
if (file_exists($siteConfigFilename)) {
    $siteConfig = new Zend_Config_Ini($siteConfigFilename);
    $config->merge($siteConfig)
        ->setReadOnly();
}

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    $config
);

это будет искать файл site.ini, и если онсуществует, объединить его с приложением INI.Затем приложение будет загружено как обычно.

Еще один способ, которым я пользовался в последнее время, - это просто сохранить application.ini как можно более минимальным (например, только имя класса начальной загрузки и расположение), а затем иметь _initSite.() метод в моем классе начальной загрузки, который создает объект Site, используя данные из базы данных.Затем он считывает данные конфигурации из INI-файла и сохраняет их в объекте Site.Затем у меня есть ресурс сайта, к которому я могу получить доступ в другом месте моего приложения, например, для выполнения $ view -> _ headTitle ($ site-> config-> title);как в вашем примере выше.

Я надеюсь, что это дает вам некоторые идеи.ZF довольно гибкий!

1 голос
/ 13 июня 2010

Помните, что вы можете передавать множество конфигурационных файлов в Zend_Application, а не только application.ini, так что это может быть лучшим в вашем случае.

Если вы сильно полагаетесь на конфиги, вас может заинтересовать создание дополнительных ресурсов приложения с использованием определенных настроек, которые вы предоставляете Zend_Application через config.ini.

Но я уверен, что в будущем вы сохраните эти параметры в базе данных и позволите конечному пользователю изменять их.

В простейшем случае решение, которое я предпочитаю:

// in the layout.phtml
$this->render('head.phtml');
...
$this->render('footer.phtml');

И в настройках нижнего колонтитула и заголовка, характерных для сайта.

Быстрый и простой в обслуживании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...