Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/Developing/Configuration ...
Это старая версия Manual/Developing/Configuration за 2008-01-17 14:15:00..

Настройка

Оглавление документа

Настройка базы данных

CakePHP ожиданные что данные о настройке подключения к базе данных будут располагаться в файле app/config/database.php. Файл с образцом настройки располагает по адресу app/config/database.php.default. Файл с готовой конфигурацией должен выглядеть так:


var $default = array('driver'      => 'mysql',
                     'persistent'  => false,
                     'host'        => 'localhost',
                     'login'       => 'cakephpuser',
                     'password'    => 'c4k3roxx!',
                     'database'    => 'my_cakephp_project',
                     'prefix'      => '');

Пример конфигурации базы данных

Если в модели не объявлена переменная $useDbConfig с названием используемых параметров подключения, то CakePHP будет использовать настройки определенные в массиве с названием $default. Например, если моему приложению требуется подключиться к еще одной базе данных, помимо основной, то я просто могу создать еще один массив с настройками (например $legacy) аналогичный по структуре массиву по умолчанию и в модели объявить, что хочу работать с другой базой данных так: var $useDbConfig = 'legacy';.


Замените пары ключ/значение в массиве настроек на ваши.
Ключ
Значение
driver

Имя драйвера базы данных для этой конфигурации.


Например: mysql, postgres, sqlite, pear-drivername, adodb-drivername, mssql, oracle или odbc.

persistentБудет ли использоваться постоянное соединение с базой данных
hostИмя сервера, на котором расположена база данных (или его IP)
loginЛогин для доступа к базе данных
passwordПароль доступа к базе данных
databaseИмя базы данных для текущего соединения
prefix (опционально)Cake будет счиать что все таблицы относящиеся к нему имеют этот префикс. Если префикс не используется — оставьте пустую строку.
port (опционально)TCP порт или сокет Unix, который используется для доступа к базе данных.
encodingУказывает в какой кодировке отправлять запросы к базе данных
schemaИспользуется в базе данных PostgreSQL, указывает на то какая схема используется

Заметим, что параметр prefix актуален для таблиц, а не Моделей. Например, если вы создаете таблицу для объединения двух ваших моделей Apple и Flavor, то таблица должна называться prefix_apples_flavors (не prefix_apples_prefix_flavors), а в настройках соединения указан ключ prefix со значением 'prefix_'.


Сейчас вы можете взглянуть в раздел Соглашения, который недавно прочитали. Правильное название для вашей таблицы (а так же некоторых колонок) облегчит разработку и поможет вам избежать лишних настроек.

Настройка ядра

Настройки конфигурации CakePHP расположены в файле /app/config/core.php. Этот файл содержит переменные и константы класса Configure, которые определяют поведение вашего приложения. Прежде чем погрузиться в детали настроек, вы должны ознакомиться с классом Configure.

Класс конфигурации

Не смотря на то, что большинство настроек в CakePHP уже предустановлены, бывает полезно иметь свой вариант конфигурации. Раньше, для того чтобы настроить Cake, необходимо было указать значения разных переменных в нескольких файлах. Разумеется, при каждом обращении приходилось все эти файлы загружать.


Новый класс Configure может использоваться для хранения любых значений. Будьте острожны — этот класс может хранить что угодно и давать доступ к этим данным из любой части приложения — прекрасное искушение к тому чтобы разорвать шаблон MVC. Основная цель этого класса, все же, хранить ту информацию, которая должна быть доступна максимальному количеству файлов вашего приложения.


Этот класс действует как одиночка и его методы могут быть вызваны из любой точки вашего приложения.


<?php Configure::read('debug'); ?>

Методы конфигурации

write(string $key, mixed $value)

Используйте write() чтобы сохранить данные в конфигурации приложения.


<?php
    Configure
::write('Company.name','Pizza, Inc.');
    
Configure::write('Company.slogan','Пицца для вашего тела и души');
?>


Примечание: используйте точку в параметре $key. Это поможет вам разграничить конфигурацию на логические группы.


Приведенный выше пример может быть так же записан при помощи одного вызова.


<?php
    Configure
::write(
        
'Company',array('name'=>'Pizza, Inc.','slogan'=>'Пицца для вашего тела и души')
    );
?>


Вы можете использовать Configure::write('debug', $int) для того чтобы переключаться между режимами отладки на лету. Особенно полезно это для AMF или SOAP, где отладочная информация может вызывать большие проблемы разбора содержимого.

read(string $key = 'debug')

Используйте метод read() для того чтобы читать конфигурационную информацию. По умолчанию CakePHP возвращает информацию об уровне отладки, если параметр не передан. Используя наши примеры выше для функции write(), мы можем получить наши данные обратно.


<?php
    Configure
::read('Company.name');    //вернет: 'Pizza, Inc.'
    
Configure::read('Company.slogan');  //вернет: 'Пицца для вашего тела и души'
 
    
Configure::read('Company');
    
//вернет:
    
array('name' => 'Pizza, Inc.''slogan' => 'Пицца для вашего тела и души');
?>

delete(string $key)

Используется для удаления информации из конфигурации.


<?php Configure::delete('Company.name'); ?>

load(string $path)

Используйте этот метод для загрузки конфигурации из какого-либо внешнего файла.


/app/config/messages.php
<?php
    $config
['Company']['name'] = 'Pizza, Inc.';
    
$config['Company']['slogan'] = 'Pizza for your body and soul';
    
$config['Company']['phone'] = '555-55-55';
?>

/app/config/core.php
<?php
    Configure
::load('messages');
    
Configure::read('Company.name');
?>


Примечание: все переменные для загрузки в конфигурацию должны представлять из себя массив ключ-значение с названием $config. Все прочие переменные будут проигнорированы при использовании функции load().

version()

Возвращает версию используемого ядра CakePHP.

Переменные конфигурации

Набор переменных конфигурации хранится в файле /app/config/core.php. Ниже приводится описание переменных конфигурации ядра, а так же действия приложения, к которым они приводят.
Переменная конфигурации
Описание
debugИзменение режима вывода отладки.
0 = Режим готовой продукции. Вывода отладки нет.
1 = Вывод ошибок и предупреждений.
2 = Вывод ошибок, предупреждений и SQL запросов.
3 = Вывод ошибок, предупреждений, SQL запросов и дампа всех переменных, доступных в контроллере.
App.baseUrlРаскомментируйте определение этой переменной, если не планируете использовать Apache и mod_rewrite для вашего приложения на CakePHP. Не забудьте так же удалить .htaccess файлы.
Routing.adminРаскомментируйте эту директиву, если хотите использовать роутинг для администратора. В значении должно быть название первой части адреса администратора. Подробнее эта опция будет описана позже.
Cache.disableКогда эта переменная устанавливается в true — на всем сайте отключается кеширование.
Cache.checkЕсли установить в true, то будет возможно работать с кешем. Активация в контроллерах по прежнему необходима, но эта переменная дает возможность в принципе обнаружить эти настройки.
Session.saveСообщает CakePHP каким образом должны храниться сессии.
php = Использовать стандартный механизм php.
cake = Сохранять сессии в /app/tmp.
database = Сохранять сессии в таблице базы данных. Перед использованием такого способа вам надо выполнить в базе данных запрос, лежащий изначально в файле /app/config/sql/sessions.sql.
Session.tableНазвание таблицы (префикс не используется) для хранения сессий.
Session.databaseИмя базы данных с таблицей для хранения сессий.
Session.cookieНазвание Cookie в которой будет храниться ключ сессии.
Session.timeoutЧисло в секундах, на основе которого будет вычислено время жизни Cookie с ключом сессии. Фактическое время зависит от Security.level
Session.startЕсли установить в true, то сессия будет создаваться при входе каждого нового пользователя.
Session.checkAgentПри false CakePHP не будет проверять неизменность браузера пользователя.
Security.levelУровень безопасности CakePHP. Время действия сессии, объявленное в Session.timeout умножается на это значение.
Возможные значения:
'high' = x 10
'medium' = x 100
'low' = x 300
Security.saltПроизвольный набор символов. Используется для создания хешей.
Acl.classname, Acl.databaseКонстанты используются в функциях Списков Контроля Доступа (ACL). Смотрите главу с таким названием для выяснения подробностей.

Примечание: настройки конфигурации кеша находятся в файле core.php. Мы поговорим об этом позже и опишем эти настройки.


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

Константы конфигурации

Хотя и большинство опций представляют из себя свойства класса конфигурации, все же есть несколько констант, которые Cake использует в своей работе.
Константа
Описание
COMPRESS_CSSЕсли установить в true, то CSS файлы будут сжиматься при отдаче. Для этого необходимо чтобы директория /var/cache была доступна для записи на сервере. Для использования опции прописывайте путь к вашим CSS файлам как /ccss (вместо /css) или используйте Controller::cssTag().
LOG_ERRORКонстанта ошибки. Используется для разделения типа записи в лог: сообщения об ошибках и отладочные сообщения. Сейчас PHP поддерживает LOG_DEBUG.

Настройка роутов (маршрутизаций)

Роуты — это функционал, который сопоставляет набранный URL-адрес с действием контроллера. Роуты были добавлены в CakePHP, чтобы сделать адреса более настраиваемыми и гибкими. Если вы используете Apache и mod_rewrite, то роуты можно и не использовать, но все же их использование позволит куда большую гибкость, чем при стандартных средствах.


В CakePHP 1.2 функциональность роутов была сильно расширена.


Прежде чем создавать свои роуты, вы должны узнать какие в CakePHP есть роуты по умолчанию. Изначально CakePHP будет понимать «красивые» адреса в любом приложении. Для того чтобы вызвать какое-то действие — достаточно просто указать в адресе его имя. Именно таким же образом можно передать параметры в это действие.


http://example.com/controller/action/param1/param2/param3

URL-шаблон роутов по умолчанию

URL /posts/view будет переадресован к методу view() контроллера PostsController, URL /products/viewClearance — к методу view_clearance() контроллера ProductsController. Если в URL действие не объявлено, то переадресация идет к методу index().


Стандартная маршрутизация также позволяет в URL передавать параметры в действия. Например URL /posts/view/25 будет означать вызов функции view(25) класса PostsController.


В CakePHP 1.2 появилась возможность называть параметры. Можно дать параметру имя и отправить его значение при помощи URL. Запрос на адрес /posts/view/title:first+post/category:general приведет к обращению к действию view() контроллера PostsController. Внутри действия вы можете обратиться к переданным параметрам, как к $this->passedArgs['title'] и $this->passedArgs['category'].


Некоторое резюме роутов по умолчанию, которые могут быть вам полезны:

URL: /monkeys/jump
Переадресация: MonkeysController->jump();
 
URL: /products
Переадресация: ProductsController->index();
 
URL: /tasks/view/45
Переадресация: TasksController->view(45);
 
URL: /donations/view/recent/2001
Переадресация: DonationsController->view('recent', '2001');
 
URL: /contents/view/chapter:models/section:associations
Переадресация: ContentsController->view();
$this->passedArgs['chapter'] = 'models';
$this->passedArgs['section'] = 'associations';

Примеры использования стандартных роутов

Определение своих роутов позволит вам определить как ваше приложение должно реагировать на тот или иной URL. Определите свои собственные роуты в файле /app/config/routes.php, используя метод Router::connect().


Метод connect() принимает до трех параметров: URL, при котором срабатывает роут, значение по умолчанию для любых элементов запроса и регулярное выражение, призванное помочь роуту найти необходимые части URL.


Router::connect(
    'URL',
    array('paramName' => 'defaultValue'),
    array('paramName' => 'matchingRegex')
)

Шаблон определения роутов

Первый параметр сообщает маршрутизатору какие URL вы хотите контролировать. URL должен представлять из себя обычную строку адреса, разделенную слешами, так же может содержать место подстановки (обозначено звездочкой (*)) или произвольный элемент роута (часть URL с двоеточием вначале). Использование символа подстановки сообщает роутам какие части адреса вы хотите разбирать, а использование произвольных элементов (тех, что с двоеточием) показывает какие части вы хотите передавать в действия контроллера.


После того, как вы указали адрес, вы используете два последних параметра connect(), чтобы указать элементы, которые необходимо искать в адресе, если он совпал. Второй параметр представляет из себя ассоциативный массив. Ключами в этом массиве являются элементы определенные вами в адресе (те, что двоеточием вначале) или стандартные элементы роутов: :controller, :action, and :plugin. Значениями будут значения определенные вами по умолчанию для этих элементов. Давайте посмотрим на некоторые примеры, чтобы все стало ясно, перед тем как начнем использовать третий параметр connect().


Router::connect(
    '/pages/*',
    array('controller' => 'pages', 'action' => 'display')
);


Этот роут уже написан в файле routes.php дистрибутива CakePHP (на 40 строке). Он применяется к любому URL, который начинается на /pages/. Роут переадресует CakePHP к действию display() контроллера PagesController(). Напимер, запрос /pages/products будет отправлен к PagesController->display('products').


Router::connect(
    '/government',
    array('controller' => 'products', 'action' => 'display', 5)
);


Это второй пример, который показывает как вы можете использовать второй параметр при определении роута для задания значений по умолчанию. Если вы создаете сайт, который предлагает продукты для разных категорий покупателей, то можете создать удобный роут. Вместо длинной и непонятной ссылки /products/display/5 пользователи будут использовать /government.


Для дополнительной гибкости вы можете определить собственные элементы роута. Таким образом можно указать какие элементы в URL могут быть неверными. Когда запрос выполняется, то значения для элементов пользовательских роутов расположены в переменной контроллера $this->params.


Ту би континед


 
Комментарии
Добавить комментарий:

Файлов нет. [Показать файлы/форму]