CakePHP с нуля установка


Содержание

Создание проекта CakePHP с использованием Composer и установка пути

У меня Composer установлен глобально, поэтому я открываю CMD и пишу следующую команду для создания проекта (composer create-project —prefer-dist cakephp / app my_app_name). Что это делает, это установить проект в моей папке пользователя. Мне нужно, чтобы проект был установлен в папку wamp / www. И я не могу на всю жизнь понять, как установить путь. Должен ли я просто вставить туда проект или это создаст проблемы с cakephp? все еще новичок в рамках ��

Любая помощь будет оценена. Благодарю.

Решение

Установка CakePHP

Перед началом работы убедитесь, что у вас установлена ​​последняя версия PHP:

По крайней мере, вы должны были установить PHP 5.5.9 (CLI) или выше. Версия PHP вашего веб-сервера также должна быть 5.5.9 или выше, и лучше всего должна быть той же версии, что и версия PHP для интерфейса командной строки (CLI).

Установка Composer

CakePHP использует Composer, инструмент управления зависимостями, в качестве официально поддерживаемого метода для установки.

Установка Composer в Linux и Mac OS X

Запустите скрипт установки, как описано в официальной документации Composer, и следуйте инструкциям по установке Composer.

Выполните следующую команду, чтобы переместить файл composer.phar в каталог по вашему пути:

Установка Composer в Windows

Для систем Windows вы можете скачать установщик Windows Composer здесь. Дальнейшие инструкции для установщика Windows Composer можно найти в README здесь.

Создать проект CakePHP

Теперь, когда вы скачали и установили Composer, допустим, вы хотите создать новое приложение CakePHP в папке my_app_name. Для этого просто запустите следующую команду composer:

Или, если Composer установлен глобально:

Как только Composer завершит загрузку скелета приложения и базовой библиотеки CakePHP, у вас должно быть установлено работающее приложение CakePHP, установленное через Composer. Обязательно сохраните файлы composer.json и composer.lock вместе с остальным исходным кодом.

Сначала укажите вашему композитору папку www. В моем случае я использую Xamp, поэтому мой композитор указал на htdocs

Я использую Windows.

Также в Windows, если я щелкну правой кнопкой мыши внутри htdocs любую папку, у меня есть возможность использовать композитор здесь

Печём пирожки или начало работы с CakePHP по-русски

Скоро товарищей, пишущих по старинке веб-страницы на голом php, можно будет показывать в зоопарках :) Наступает эра Фреймворков. И это хорошо, потому что программист избавлен от множества рутинных задач, и может сосредоточиться на создании логики приложения. В CakePHP используется подход MCV (Model — View — Controller). Теперь вместо одного файла *.php на одну страничку их будет целых три минимум %) — один для модели (описывает связь формы с базой данных, имеет расширение php), thtml файл будет описывать внешний вид страницы (view), третий (контроллер страницы с расширением php будет реализовывать логику формы и будет содержать методы, дополняющие функциональность родительского класса AppController.

Что ж, начнем печь приложения как пирожки :)) Но для этого придется преступить через себя и принять новый подход к программированию. Оно того стоит ^_^

Установка

Вам нужен Apache с установленным mod_rewrite и mod_php, php4 или php5, а также база данных (в нашем примере используется MySQL). Первым делом разживитесь на www.cakephp.org свежей версией CakePHP. Там же расположен неплохой мануал, которому я во многом буду следовать. Распакуйте архив в корневую директорию веб-сервера и наберите в браузере адрес сайта. Должна появиться приветственная страничка: Your database configuration file is not present.

Нужно прописать соединение с базой данных. Делается это в директории app/config — берем за основу database.php.default и переименовываем его в database.php. Прописываем в файле параметры соединения с базой. Если все ОК то CakePHP сообщит об этом. Your database configuration file is present. Cake is able to connect to the database.

Все готово для творчества.

Модуль новостей

Напишем простейший модуль новостей, чтобы проиллюстрировать технологию создания сайтов на Фреймворке. Создадим в базе данных таблицу posts, в которой будут храниться новости.CREATE TABLE `posts` ( `id` bigint(20) NOT NULL auto_increment, `post_date` date NOT NULL default ‘0000-00-00’, `post_header` varchar(255) NOT NULL default », `post_text` text NOT NULL, `archived` tinyint(4) NOT NULL default ‘0’, PRIMARY KEY (`id`) )

Вопрос: почему бы таблицу не назвать «news»? Таблица должна иметь имя сущности во множественном числе. В английском «новости» news всегда употребляется во множественном числе, тем более слово new является ключевым в php, что приводит к ошибке.

Модель

В папке app/models создадим файл модели post.php VALID_NOT_EMPTY, ‘post_text’ => VALID_NOT_EMPTY, ‘post_date’ => VALID_NOT_EMPTY ); > ?>

В массиве $validate описываются ограничения накладываемые логикой приложения на данные. Мы запретили пустые поля Текст, Заголовок и Дата.

Контроллер

В папке app/controllers создадим файл posts_controller.php. Создадим объект, который реализует основные функции модуля новостей: отображение списка (index), просмотр новости (view), удаление новости (delete), добавления новости (add).set(‘posts’, $this->Post->findAll()); // выборка всех
записей //из таблицы $this->pageTitle = ‘Новости’; > function view($id) // просмотр новости < $this->Post-> >set(‘post’, $this->Post->read()); > function add() // добавление новости < if (!empty($this->data)) < if ($this->Post->save($this->data)) < $this->flash(‘Новость была успешно добавлена’,’/posts’); // flash выдает сообщение пользователю в виде ссылки на страницу, указанной во втором аргументе функции > > > function delete($id) // удаление новости < $this->Post->del($id); $this->flash(‘Новость была удалена’, ‘/posts’); > function edit($ >data)) < $this->Post-> >data = $this->Post->read(); > else < if ($this->Post->save($this->data[‘Post’])) < $this->flash(‘Новость была отредактирована’,’/posts’); > > > > ?>

В папке app/views создадим папку posts. В этой папке необходимо создать файлы видов для каждой функции, кроме функции Delete, которая не требует своего вида, а использует только функцию flash.

app/views/posts/index.thtmlНовости >’; if (count($posts)>0) < ?>

Дата Заголовок Текст
= $news_teaser_length) < $last_word = $mes_words[$news_teaser_length -1]; for ($i = 0; $i link($text.$news_more_annex, '/posts/view/'.$post['Post']['id']); >else < echo $html->link($post[‘Post’][‘post_text’], ‘/posts/view/’.$post[‘Post’][‘id’]); > ?> link(‘Редактировать’, ‘/posts/edit/’.$post[‘Post’][‘id’]); ?> link(‘Удалить’, ‘/posts/delete/’.$post[‘Post’][‘id’]); ?>

Новостей пока нет»; > ?>

Название:
input(‘Post/post_header’, array(‘size’ => ’40’))?> tagErrorMsg(‘Post/post_header’, ‘Название не может быть пустым.’) ?>

Дата:
input(‘Post/post_date’, array(‘size’ => ’40’))?> tagErrorMsg(‘Post/post_data’, ‘Дата не может быть пустой.’) ?>

Текст:
textarea(‘Post/post_text’, array(‘rows’=>’10’)) ?> tagErrorMsg(‘Post/post_text’, ‘Сообщение не может быть пустым.’) ?>

app/views/posts/edit.thtmlРедактирование новости hidden(‘Post/id’); ?>

Заголовок:
input(‘Post/post_header’, array(‘size’ => ’40’))?> tagErrorMsg(‘Post/post_header’, ‘Необходим заголовок.’) ?>

Дата:
input(‘Post/post_date’, array(‘size’ => ’40’))?> tagErrorMsg(‘Post/post_date’, ‘Необходима дата.’) ?>

Текст:
textarea(‘Post/post_text’, array(‘rows’=>’10’)) ?> tagErrorMsg(‘Post/post_text’, ‘Текст не должен быть пустым!’) ?>

Фу: вроде все почти готово :) Теперь осталось перенаправить пользователя c приветственной странички CakePHP на страничку app/posts.

Для этого идем в app/config/routes.php и меняем там строку$Route->connect(’/’, array(’controller’ =>
‘pages’, ‘action’ => ‘display’, ‘home’));

на строку$Route->connect (’/’, array(’controller’=>’posts’, ‘action’=>’index’));

Теперь можете в браузере набрать адрес сайта и понаблюдать CakePHP в действии :)

Небольшая обработка напильником

Полюбовавшись на полученное приложение, пытливый читатель скоро почувствует разочарование. Как поменять стиль страницы, убрать маленький баннер снизу и гордое «CakePHP Rapid Development» в верху каждой страницы? Как заставить функцию flash отображать текст по-русски? Для этой цели служат layouts. (Долго думал, как перевести layouts и решил остановиться на слове «шаблоны»). Бодро идем в папку app/views/layouts и помещаем там нужные файлы:

default.thtml, например, такой:

Вылечим функцию flash от любви к utf8. Для этого разместим там же flash.thtml

Прототипы этих файлов можно увидеть в папке cake/libs/view/templates/layouts

CakePHP: создаем сайт для закладок.

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

Если вы эксперт в CakePHP, вы знаете, как находить контроллеры, углубляться в модели и создавать представления, впечатляющие публику. Но, войдя во вкус быстрой разработки приложений с CakePHP, вы хотите сделать еще, причем больше за меньшее время. Что ж, имеете право: и мы посмотрим, как расширить функционал нашего приложения с помощью модулей CakePHP. Это следствие принципа DRY (Don’t repeat yourself — Не повторяй себя). Найдя решение проблемы однажды, разумным образом оформите его и поделитесь им со всем миром, чтобы каждый мог что-то вложить и что-то получить от этого решения. А для этого прихватите немного кода, уже написанного другими, и воспользуйтесь модулями расширения, чтобы сэкономить массу времени.

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

Как всегда, потратим немного времени на то, чтобы убедиться, что наша база данных соответствует соглашениям и стандартам CakePHP, чтобы каркас сделал за нас всю трудную работу. Желающим отклониться от предложенных стандартов и структур советую заглянуть на страничку http://book.cakephp.org/view/901/cakephp-conventions — там можно получить информацию о том, как уйти в свободное плавание собственным путем.
Немного поразмыслим над данными, которые нам нужно будет хранить. Нам понадобятся URL, пользователи, рейтинги, чтобы при размещении адресов закладок в Twitter, Facebook или любой другой социальной сети пользователи смогли оценить содержимое, если оно им нравится.
CREATE DATABASE `bookmark`;
USE `bookmark`;
CREATE TABLE `urls` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`user_id` CHAR(36) NOT NULL,
`name` VARCHAR(128) NOT NULL,
`url` TEXT,
`created` DATETIME,
`modified` DATETIME
);
CREATE TABLE `users` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`username` VARCHAR(45) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`created` DATETIME,
`modified` DATETIME
);

Минуточку, но ведь это, конечно, не все таблицы, которые нам нужны? Список параметров, которые мы хотели хранить для каждой вкладки, был довольно длинным. И непохоже, что в этой таблице хватает полей на все данные — если не считать того момента, что каждый модуль расширения может хранить необходимую информацию из базы данных самостоятельно, чтобы гарантировать, что в пакете модуля содержится весь предоставляемый функционал, включая требования базы по хранению данных.
Ну и как это работает? Для этого необходимо воспользоваться либо оболочкой «Schema», поставляемой с CakePHP, либо модулем расширения «Migrations». Мы воспользуемся модулем миграции.
Bake — консольная команда, с помощью которой можно генерировать код, выполнять миграции, запускать тесты и многое другое. Для удобства работы с ней из консоли, путь cake/console внутри пакета CakePHP нужно включить в переменную окружения PATH. Сделать это можно так:
$export PATH=»$PATH:/path/to/cakephp/cake/console»
Единственное оставшееся требование — РНР должен быть доступен в командной строке. Во многих дистрибутивах есть пакет php-cli или подобный ему, в котором есть исполняемый файл РНР для командной строки.
Начнем новый проект и создадим базовую структуру, от которой и будем отталкиваться. Выполняем следующие команды:
$cake bake project bookmark
$cd bookmark
CakePHP создал базовую структуру приложения. Она содержит каталоги и ряд исходных файлов для обслуживания статических страниц. Покопайтесь в ней, присмотритесь, чем именно вас снабдили.
Прежде чем заняться выпеканием, нужно дать понять CakePHP, как подключится к нашей базе данных. Скопируйте файл /config/database.php.default в /config/datаbase.php. Введите туда настройки своей базы данных, имя пользователя и пароль для базы данных. Вот, примерно, что у вас должно получиться:
`mysql`,
`persistent` => false,
`host` => `localhost`,
`login` => `login`,
`password` => `password`,
`database` => `bookmark`,
`prefix` => «,
);
>
Заметьте, что настройки базы test из этого файла удалены. Тестовая конфигурация используется при модульном тестировании, а мы в рамках нашего проекта этим заниматься не будем.
Давайте приступим к созданию моделей, представлений и контроллеров для таблиц базы данных, которые мы создали ранее. С помощью команд создадим весь код, необходимый для работы приложения в целом, потом нам останется только его модифицировать.
$cake bake all user
$cake bake all url
Пусть вас не пугает объем вывода команды bake, чем больше данных она выводит, тем больше времени мы сэкономим на написании кода. Взглянув на вывод, вы увидите все пути и имена файлов, которые были созданы для нас. Теперь у нас есть пользователь и система управления ссылками, и вы можете заходить на сайт, чтобы добавлять или изменять какую-либо информацию. Попробуйте открыть ссылку /users. У меня каталог находится в корне веб-сервера и адрес будет таким: http://localhost/bookmark/users. Откроется страница со списком пользователей, где вы сможете найти ссылки для добавления пользователей и изменения информации о них.
Быстренько пробежимся по тому, как закрыть сайт от доступа посторонних, чтобы мы смогли создавать пользователей и входить в систему, но без входа в систему доступ ко всему был бы закрыт.
Откройте файл app_controller.php в корне проекта. Это пустой контроллер, от которого наследуют свой функционал все остальные контроллеры приложения. Все сделанное в нем будет доступно во всех остальных контроллерах, так что это прекрасное место для аутентификации, которая заставит пользователей входить на сайт и помешает незваным гостям изменять данные. Добавьте компоненты «Auth» и «Session». Теперь ваш контроллер AppController длжен выглядеть так:
set(‘authUser’,$this->Auth->user());
return parent::beforeFilter;
>
>
Как видите, мы изменили вызов set в функции beforeFilter. Это гарантирует нам доступ к информации о текущем пользователе во всех представлениях сайта. Если текущего пользователя нет, this установится в null.
Затем откройте /controllers/users_controller.php и добавьте действие login. Оно может быть пустым: о его содержании позаботиться CakePHP. Пока мы тут, давайте добавим еще и logout, чтобы дать возможность пользователям выходить из системы:
function login() <
>
function logout() <
return $this->redirect($this->Auth->logout());
>
Наконец, в контроллере нужно гарантировать, что для создания пользователя не придется входить в систему, иначе система заблокируется, так как в ней не пользователей. Добавляем следующий метод в контроллер users:
function beforeFilter() <
$this->Auth->allow(‘add’);
return parent::beforeFilter();
>
Последний фрагмент этой мозайки — файл представления view, который был создан утилитой bake. Он примет имя пользователя и пароль и позволит пользователям войти в систему. Создайте представление login в новом файле: /views/users/login.ctp:

Снова откройте список пользователей users, и вы незамедлительно будете перенаправлены на форму авторизации. Теперь попробуйте зайти на страницу добавления пользователя, и вы увидите, что ее можно просматривать без ввода логина и пароля.
Пора выпить чашку чаю/кофе, кому что нравиться — сайт работает, данные мы защитили. Пробегитесь по приложению и создайте нового пользователя. Зайдите на сайт под этим пользователем и проверьте, что все работает правильно, добавьте пару ссылок. Теперь, когда сайт вам знаком и вы довольны его работой, пора подключить несколько модулей и заставить работать некоторые примочки.
Давайте отыщем необходимые модули, загрузим их и настроим каталоги в /app/plugins. Для загрузки модулей воспользуемся Git. С помощью Git модули грузятся быстрее. Вдобавок, это прекрасная возможность научится работать с Git как со средством управления версиями:
git clone https://github.com/cakedc/migration.git plugins/migrations
git clone https://github.com/cakedc/ratings.git plugins/rating
git clone https://cakedc/search.git plugins/search
git clonr https://github.com/predominant/cake_social.git plugins/cake_social
git clonr https://github.com/predominant/goodies.git plugins/goodies
Только что мы сэкономили несколько месяцев на разработке. Я не шучу. Мы воспользовались набором модулей с открытым исходным кодом, которые доступны любому разработчику.
Ранее говорилось, что нам не хватает таблиц в базе данных, и мы позаботимся об этом с помощью миграции баз данных. Сейчас вы увидите, как просто создать таблицу базы данных для модулей и повторного использования кода в проектах. Не всем модулям нужна миграция, и не все модули ее предусматривают. У тех, у кого она есть, в каталоге config есть подкаталог migrations. Например, вы можете пройтись по модулям и посмотреть, кому из них нужна миграция, или просто запустить ее для всех: тогда для модулей, которым она не нужна, появится сообщение об ошибке — тут-то они нам и попадутся.
Выполните следующую команду, чтобы завершить настройку таблиц для добавленных модулей:
$cake migration -plugin ratings all
Теперь у вас есть все необходимые таблицы.
Для начала обеспечим возможность выставления рейтинга. Рейтинг должен быть только у URL-адресов. Добавить компонент очень просто: открываем UrlsController в файле /controllers/urls_controller.php и добавьте компонент Ratings:
class UrlsController extends AppController <
var $components=array(‘Ratings.Ratings’);
//.. existing code
>
Свежедобавленный компонент сам подключается вспомогательный класс, необходимый для отображения формы с рейтингом, а также обрабатывает сохранение и загрузку информации о рейтингах. Поэтому все, что нужно — это задать представление для отображения формы с рейтингами с помощью вспомогательного класса рейтингов.
Страница просмотра адреса смотрится довольно пресно. Нужно как минимум добавить немного графики и элементов управления, чтобы посетители быстрее воспринимали информацию. Оставим сложности CSS и стилизации веб-мастерам, но немного упростим им задачу, показав иконки пользователя из информации о пользователя для каждого адреса. Для этого будем использовать вспомогательный класс gravatar плагина Goodies.
Откройте представление для адресов. Мы заменим строку:
Html->link($url[‘User’][‘id’], array(‘controller’ => ‘users’, ‘action’ => ‘view’,$url[‘User’][‘id’]));?>
на похожую, но включающую в себя вывод аватара с помощью вспомогательного класса:
Html->link(
$this->Gravatar->image($url[‘User’][’email’]),
array(‘controller’ => ‘users’, ‘action’ => ‘view’,
$url[‘User’][‘id’]),
array(‘escape’ => false));?>

Наконец, подключите вспомогательный класс в контроллере AppController в файле /app_controller.php:
class AppController extends Controller <
var $helpers=array(‘Html’,’Form’,’Sessions’,’Goodies.Gravatar’);
//.. existing code
>
Теперь будет отображаться граватар пользователя, полученный по его e-mail, указанному во время регистрации, а вместо уродливого UUID будет показано имя пользователя.
Давайте еще немного украсим дополнительную информацию, добавив возможность поделиться ссылкой в социальных сетях, чтобы привлечь больше посетителей на сайт. Этот функционал предоставляет модуль CakeSocial. В модуле есть вспомогательный класс «ShareThis», который очень сильно упрощает обмен контентом в социальных сетях. Добавляем вспомогательный класс в контроллер AppController в файле /app_controller.php:
class AppController extends Controller <
var $helpers=array(‘Html’,’Form’,’Sessions’,’Goodies.Gravatar’,’CakeSocial.ShareThis’);
//,,existing code
>
С разу перед закрывающим тегом в представлении для адресов /view/urls/view.php вставьте следующий код:
>
>
ShareThis->display();?>

В этом представлении пять строк, но только одна выводит ссылки на социальные сети. Остальное — метка и стили для обертки вывода. Обновите страницу и увидите, что ссылки на социальные сети ShareThis появились, и можно поделиться ссылкой в списке сервисов по умолчанию.
Приложение, которое у нас получилось, показывает, как быстро можно создавать код с CakePHP, и иллюстрирует качество свободных модулей. У приложение есть большой потенциал для расширения — предоставление дополнительной информации, например, частых URL-адресов, интеграция в сервис REST, Ajax-скриплет для работы с закладками, который можно встроить в браузер. Возможности CakePHP по истине безграничны!

Добавление кэширования

Повышение производительности приложений

Серия контента:

Этот контент является частью # из серии # статей: Быстрое создание Web-сайтов с помощью CakePHP, Часть 5

Этот контент является частью серии: Быстрое создание Web-сайтов с помощью CakePHP, Часть 5

Следите за выходом новых статей этой серии.

Цукерберг рекомендует:  Верстка - Оцените верстку

Данная серия руководств предназначена для тех разработчиков приложений на PHP, кто хочет начать использовать CakePHP, чтобы облегчить себе жизнь. Прочитав до конца, вы научитесь устанавливать и настраивать конфигурацию CakePHP, изучите основы проектирования Модель-Представление-Контроллер (MVC), узнаете, как проводить валидацию пользовательских данных в CakePHP, как применять помощников CakePHP, и как, используя CakePHP, можно быстро написать и запустить приложение. Может показаться, что нужно изучить очень много, но не переживайте — большую часть CakePHP сделает за вас.

Предполагается, что вы уже прочитали первую, вторую, третью, и четвертую части данной серии, и у вас есть рабочая среда, которая была установлена для выполнения примеров. Если у вас не установлен CakePHP, то прежде чем идти дальше, необходимо обратиться к первой и второй частям данной серии.

Предполагается, что вы знаете язык программирования PHP, обладаете фундаментальным пониманием проектирования баз данных, и не боитесь замарать рук.

Системные требования

Для того чтобы начать работу, у вас должна быть среда, в которой можно работать. CakePHP предъявляет минимальные разумные требования к серверу:

  1. Сервер HTTP с поддержкой сессий (и желательно mod_rewrite ). Данное руководство было написано при использовании Apache V1.3 с mod_rewrite .
  2. PHP версии 4.3.2 или выше (включая PHP версии 5). Данное руководство создавалось на основе PHP версии 5.0.4
  3. Поддерживаемое ядро базы данных (на сегодняшний день — MySQL, PostgreSQL или используя надстройку над ADODB). Руководство было написано при использовании MySQL V4.1.15.

Также необходима база данных и пользователь базы данных, готовые к использованию приложением. В руководстве представлены синтаксические структуры для создания всех необходимых таблиц в MySQL.

Самый простой способ получить CakePHP — это зайти на сайт CakeForge.org и загрузить самую последнюю стабильную версию. Данное руководство создавалось на основе версии 1.1.8. (Полные сборки и копии Subversion также доступны для загрузки. Подробное описание приведено в Справочнике по CakePHP — см. Ресурсы).

Итак, Tor

В конце четвертой части, вам было задано усовершенствовать Tor. Справились?

Добавление представления и функции Favorites

Для просмотра списка Favorites (Избранное), необходимо добавить функцию favorites в контроллер users, как показано в листинге 1.

Листинг 1. Добавление функции favorites в контроллер users

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

Также необходимо добавить файл favorites.html в директорию app/views/users/, который может выглядеть так, как показано в листинге 2.

Листинг 2. Favorites.html

Фактически, все, что делает представление, это показывает таблицу products. Однако сейчас таблица products отображается вместе с ссылкой Add To Favorites (добавить в Избранное). Это неправильно, так как просматривается именно список товаров в favorites (Избранном). Должна быть ссылка Remove From Favorites (удалить из Избранного).

Добавление ссылки Remove From Favorites (удалить из Избранного)

Итак, ваше задание заключалось в добавлении ссылки Remove From Favorites (удалить из Избранного) в таблицу products, настроив ее таким образом, чтобы пользователь видел ссылку Remove (удалить), если товар присутствует в его списке favorites (Избранное), и ссылку Add (добавить), если данного товара нет в списке favorites (Избранное) пользователя. Давайте посмотрим на таблицу products еще раз, так как это очень важно.

Листинг 3. Таблица рroducts

Ссылка Remove From Favorites (удалить из Избранного) аналогична тому, что показано в листинге 4.

Листинг 4. Ссылка Remove from Favorites (удалить из Избранного)

Также в контроллере products должна быть функция removeFromFavorites .

Листинг 5. Функция removeFromFavorites

Аналогично, необходимо создать метод removeFavorite в контроллере users.

Листинг 6. Создание метода removeFavorite

Наверно, вы обратили внимание, что при просмотре списка favorites, отображается ссылка Add to Favorites (добавить в Избранное). Вместо нее пользователь должен видеть кнопку Remove from Favorites (удалить из Избранного) для тех товаров, которые были добавлены и находятся в списке favorites. Как это сделать?

Кэширование

По своей сути, кэширование иногда может быть очень сложным. Существуют различные типы кэширования, и у каждого есть свои преимущества и недостатки. Крайне важно понимать, что имеется в виду под словом «кэширование» в данном случае.

Понятие кэширования

Как правило, кэширование происходит при каждом запросе, когда отвечающее приложение говорит «Мне не нужно никуда идти за информацией. Она уже есть у меня». Чаще всего, если пользователь компьютера слышит слово «кэш», то он думает о кэше браузера. Обычно, для того чтобы ускорить работу пользователя, браузер сохраняет копии просмотренных статических файлов — рисунки, таблицы стилей, статические HTML-файлы и файлы сценариев. Хотя данный тип кэширования иногда доставляет неприятности разработчикам Web-приложений, в данном руководстве он рассматриваться не будет.

Еще один пример кэширования — запрос браузером контента у приложения. Если Web-приложение применяет кэширование, то оно может ответить на запрос предварительно созданной копией контента, что снижает излишние затраты ресурсов на вторичное создание контента. Данный тип кэширования и будет описан в данном приложении.

Зачем кэшировать?

Как правило, в приложении кэширование используется по двум причинам. Первая — оно помогает снизить потребление ресурсов на сервере. Хотя в большинстве случаев эта экономия минимальна, но для часто просматриваемых сайтов, обслуживающих большое количество запросов, эти небольшие экономии в сумме сводятся к значительному увеличению производительности. Вторая причина — скорость. Так как приложению не приходится проходить через процесс повторного создания контента для запроса, то контент может быть предоставлен гораздо быстрее. Опять же, в большинстве случаев, экономия минимальна, но использование кэширования позволяет часто просматриваемым сайтам получать прирост в скорости.

Как кэшировать?

Итак, вас уговорили. Теперь вы готовы к тому, чтобы кэшировать все и всегда. Как это сделать? Как CakePHP может упростить данную задачу?

Для начала, необходимо включить кэширование. По умолчанию оно отключено. Включить его можно в app/config/core.php — найдите запись: define(‘CACHE_CHECK’, false); и измените ее на define(‘CACHE_CHECK’, true); .

Задавая значение true (истина), вы, тем самым, указываете CakePHP, что кэширование включено. Давайте пойдем дальше, так как настроить кэширование можно позднее. Мы еще не закончили: необходимо указать CakePHP, что конкретно необходимо кэшировать и на какой промежуток времени.

Что кэшировать?

Включив кэширование, необходимо указать, что нужно кэшировать. Это можно реализовать в контроллере для представлений, которые необходимо кэшировать, добавив кэширование в массив helpers . Например, если необходимо кэшировать представления products, то в массиве helpers контроллера products должно присутствовать кэширование. Когда вы создавали контроллер products в Tor, то указали, что используются helpers (помощниики) форм и HTML. При добавлении кэширования в этот список массив helpers будет выглядеть следующим образом: var $helpers = array(‘Html’, ‘Form’, ‘Cache’ ); .

Теперь, когда используется помощник кэширования, необходимо указать, что конкретно следует кэшировать. Это можно выполнить различными способами, однако все они зависят от массива $cacheAction .

Кэширование конкретного запроса

Предположим, что необходимо кэшировать конкретный запрос. Представим, что есть три или четыре товара, которые часто просматриваются, и вы хотите кэшировать только представления «просмотра» («view») данных товаров. В этом случае, необходимо описать запросы, которые вы хотите кэшировать, в качестве ключей массива для $cacheAction и указать временной срок в качестве значений ключа. Массив $cacheAction является переменной класса так же, как и массив $helpers . Для кэширования этих конкретных представлений, $cacheAction должен выглядеть так, как показано в листинге 7.

Листинг 7. $cacheAction

Данный $cacheAction указывает CakePHP, что необходимо кэшировать представления «просмотра» для товаров 1-3 в течение 3,600 секунд (один час). Указанный временной срок может задаваться в любом формате, который интерпретируется strtotime() . Можно просто задать 1 hour (1 час).

Кэширование целой функции

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

Можно даже смешать и согласовать.

Листинг 8. Смешивание и согласование

Данный прием позволяет экономить время. Теперь вы кэшировали представления «просмотра» наиболее часто просматриваемых товаров и все представления редактирования, но может появиться желание сделать больше.

Кэширование всех функций контроллера


Возможно, необходимо кэшировать все, что делает контроллер. В этом случае, нет никакой необходимости описывать каждую функцию в массиве $cacheAction . Можно просто в качестве значения $cacheAction задать промежуток времени хранения кэшированной информации: var $cacheAction = «+1 hour»; .

Значением должна быть строка, которую может интерпретировать strtotime() . Если задать $cacheAction только одно значение, то это укажет CakePHP, что нужно кэшировать все представления контроллера.

Кэширование из функции

Так как $cacheAction является переменной класса, то можно обращаться к переменной непосредственно из функции. Предположим, что необходимо изменить $cacheAction из функции. В этом случае, будет тот же самый синтаксис, который используется для изменения любой переменной класса.

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

Когда использовать кэширование?

Возможно, у вас появилось ощущение, что кэширование — это самое замечательное изобретение человечества. Более того, очень часто так и есть. Однако возникает вопрос, в каком случае не следует кэшировать представления?

Чаще всего, не следует кэшировать данные, которые постоянно изменяются. Например, предположим, что пользователи Tor добавляют товары несколько раз в минут. В этом случае, кэширование представления index может стать помехой. Если контент изменяется так часто, что кэшированная страница никогда не используется, то получается, что вы просто увеличили затраты ресурсов на хранение кэшированной страницы и проверку при каждом запросе, не была ли она изменена.

Однако это вовсе не означает, что кэширование не нужно использовать вообще. Просто необходимо уточнить CakePHP что следует кэшировать.

Использование разметки в представлении

В представлении или макете, CakePHP позволяет исключить некоторый контент из кэширования, если заключить его в теги . Корректное использование этой разметки позволит CakePHP кэшировать статические части представления или макета, и гарантировать, что динамические составляющие страницы считываются при каждом запросе.

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

Например, в Tor, используемый по умолчанию макет, созданный в четвертой части должен выглядеть примерно так :

Листинг 9. Макет, используемый по умолчанию

Если кэширование включено, то при первой загрузке любой страницы, которая использует макет по умолчанию, Welcome read(‘user’) ?> будет заменено на Welcome или Welcome wrestler — то есть, неважно какой пользователь вошел в систему, он увидит кэшированное имя пользователя.

Чтобы указать, что не следует кэшировать имя пользователя, необходимо заключить строку read(‘user’) ?> в теги . Окончательный результат будет выглядеть следующим образом:

Листинг 10. Описание того, что имя пользователя не должно кэшироваться

Можно выполнить проверку, указав, что контроллер products использует кэширование функции представления (view). Добавьте кэширование в список помощников (helpers) и укажите представление в $cacheAction .

Листинг 11. Описание того, что контроллер products использует кэширование функции представления

Теперь, посмотрите товар. Вы должны увидеть файл, созданный в app/tmp/cache/views, который соответствует тому товару, который вы смотрели. Зайдите в систему под другим пользователем и посмотрите тот же самый товар. Вы увидите, что имя пользователя не было кэшированно. Отредактируйте этот товар. Теперь CakePHP известно, что нужно удалить кэшированное представление. Разве не изящно?

Использование тегов позволяет найти изящное решение кэширования представлений и сохранения актуального контента. Случается, что и этого недостаточно. Иногда приходится чистить кэш вручную.

Когда очищать кэш

Даже если вам известно, что подлежит кэшированию, а что нет, иногда возникает необходимость очищать кэш вручную. Может возникнуть мысль, что такая необходимость возникает при изменении и обновлении информации. Например, если товар был отредактирован, то представления просмотра и редактирования данного товара, так же как и представление index товаров должны быть удалены из кэша. Вы правы! Их действительно необходимо удалить из кэша.

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

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

Как очищать кэш

Аналогично тому, как CakePHP предоставляет различные способы кэширования данных, существует несколько способов удаления информации из кэша:

  • Для очистки кэша только от кэшированного представления «просмотра» товара 1 необходимо использовать следующую структуру: clearCache(‘products_view_1’); .
  • Для очистки кэша от всех представлений «просмотра» контроллера products необходимо использовать следующую структуру: clearCache(‘products_view’); .
  • Для очистки кэша от всех представлений контроллера products необходимо использовать следующую структуру: clearCache(‘products’); .
  • Для очистки кэша от различных типов представлений, необходимо передать массив в clearCache :
    Если необходимо очистить весь кэш, то вызовите функцию без параметров: clearCache(); . Эту функцию можно вызвать, создав контроллер emptycache и поместив вызов функции в функцию index. Данная функция должна вызываться вручную, или через что-либо в событии, которое должно быть автоматизировано процессом.

Заключение

Поздравляю! Вы прочитали всю серию до конца. Вероятно, вы в приподнятом настроении и готовы создавать свое собственное приложение.

Но прежде, в app/config/core.php, задайте 2 в качестве значения DEBUG. Это укажет CakePHP, что необходимо отображать отладочную информацию SQL в нижней части окна представлений. Кэшированные страницы хранятся в app/tmp/cache/views. Откройте одну из них, чтобы иметь представление о том, как выглядят кэшированные страницы. Удалите кэшированные файлы и представление товара. Обратите внимание на то, сколько запросов было сделано и как долго они выполнялись. Теперь перезагрузите. Представление было кэшировано. Сколько запросов было запущено на этот раз? Узнайте больше о кэшировании. Рассмотрите различные способы его использования в Tor. Когда разберетесь со всем окончательно, удалите его и займитесь разработкой своего собственного приложения.

Итак, вы много узнали из серии «Быстрое создание Web-сайтов с помощью CakePHP», но только создание своего собственного приложения с помощью CakePHP позволит применить свои знания на практике.

Ресурсы для скачивания

  • этот контент в PDF
  • Part 5 source code (os-php-cake5.source.zip | 158KB)

Похожие темы

  • Оригинал статьи: Cook up Web sites fast with CakePHP, Part 5: Adding cache.
  • Чтобы получить более подробную информацию о CakePHP, посетите сайт CakePHP.org.
  • Подробное описание CakePHP API. Здесь расположена свежая документация по CakePHP.
  • Огромное количество информации предлагается на сайте The Bakery, представляющем сообщество пользователей CakePHP.
  • Валидация данных в CakePHP использует Perl-совместимые регулярные выражения PHP.
  • Хотите узнать больше о шаблонах проектирования? Прочитайте книгу Шаблоны проектирования: Элементы объектно-ориентированного программного обеспечения многократного использования.
  • Прочитайте исходные материалы по созданию пользователей.
  • Прочитайте Википедия: Модель-Представление-Контроллер.
  • Полезные первоисточники по шаблону Модель-Представление-Контроллер.
  • Здесь представлен полный список различных типов шаблонов проектирования программного обеспечения.
  • Прочитайте о шаблонах проектирования.
  • Для получения дополнительной информации по PHP посетите Ресурсы проекта PHP на IBM developerWorks.
  • Посетите раздел, посвященный ПО с открытым исходным кодом, на developerWorks для получения обширного количества информации, инструментальных средств, и обновлений проекта, призванного помочь в разработке при помощи технологий с открытым исходным кодом и в использовании их совместно с продуктами IBM.
  • Интервью и обсуждения, которые будут интересны для разработчиков ПО, доступны для прослушивания на сайте подкасты developerWorks.
  • Внесите новшества в Ваш следующий проект разработки с открытым исходным кодом при помощи пробного программного обеспечения IBM, доступного для загрузки или представленного на DVD.

Комментарии

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

cakephp Начало работы с cakephp

замечания

В этом разделе представлен обзор того, что такое cakephp, и почему разработчик может захотеть его использовать.

Следует также упомянуть о любых крупных предметах в рамках cakephp и ссылаться на связанные темы. Поскольку Documentation for cakephp является новым, вам может потребоваться создать начальные версии этих связанных тем.

Версии

Версия Дата выхода
1.2.0 2008-12-26
1.3.0 2010-04-25
2.0.0 2011-10-17
3.0.0 2015-03-22

Основной первый пустой проект

Начальное создание и загрузка (CakePHP 3.x)

Самый простой способ создать новый проект CakePHP — через Composer (если вы не знаете о композиторе, посмотрите здесь для получения дополнительной информации)

Установить композитор

Если вам нужно установить его и запустить на компьютере с Windows, следуйте этому руководству

Если вы находитесь в Linux / Unix / OSX, следуйте этому руководству

Создайте первый проект CakePHP

Откройте окно консоли и перейдите к установке php (в Windows с установкой xampp по умолчанию это C:\xampp\php )

Чтобы создать пустой проект, выполните следующую команду:

Выпечка / Model / View / Контроллеры

Магия CakePHP — выпечка — автоматическое создание контроллера, модели и кода вида с базовыми вариантами CRUD.

Перед выпечкой необходимо настроить соединение с базой данных. Для этого вам нужно отредактировать файл config/app.php в своем проекте.

Если ваша база данных подключена правильно, вы затем bin/cake bake в корневой папке вашего проекта в окне консоли.

Это должно вывести что-то вроде этого:

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

Это будет выводить что-то в этом направлении:

Путем запуска cake bake all модель, таблица, контроллер, файлы крепления и файлы просмотра. Запустите это для каждого возможного имени модели, и у вас есть действующий проект с базовыми параметрами CRUD.

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

CakePHP 2.x Основные сведения

Будет говорить о структуре каталогов CakePHP, что означает каждая папка.

CakePHP имеет несколько основных папок

  1. app — It Содержит наш исходный код приложения, весь наш код находится под этим каталогом.
  2. lib — Это освободительное ядро ​​cakephp, оно содержит весь базовый код библиотеки cakephp. Редактирование кода внутри этого каталога не предлагается, поскольку они могут вызвать ошибку при обновлении библиотеки cakephp.
  3. plugins — содержит код плагинов cakephp, который будет использоваться для нашего приложения.
  4. vendors — содержит внешний код, этот код не будет использовать библиотеку cakephp.
  5. index.php — это индексный файл.

У нас может быть несколько приложений, размещенных внутри одного проекта. т.е. они могут использовать те же папки lib, plugin и vendors.

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

Папки плагинов и вендоров разделяются всеми приложениями, размещенными в том же каталоге.

index.php — это файл, который вызывается первым.

Теперь мы должны перейти в нашу папку приложений

Структура папок CakePHP3

После того, как вы скачали, это файлы и папки, которые вы должны увидеть:

  • В папке bin хранятся исполняемые файлы консоли Cake.
  • В папке конфигурации хранятся файлы конфигурации, используемые CakePHP. Здесь должны храниться сведения о соединении с базой данных, начальной загрузке, основных конфигурационных файлах и т. Д.
  • В папке плагинов хранятся плагины, которые использует ваше приложение.
  • Обычно папка журналов содержит ваши файлы журналов, в зависимости от конфигурации журнала.
  • В папке src будут размещены файлы вашего приложения.
  • В папке с тестами вы найдете тестовые примеры для своего приложения.
  • Папка tmp — это где CakePHP хранит временные данные. Фактические данные, которые он хранит, зависят от того, как вы настроили CakePHP, но эта папка обычно используется для хранения описаний моделей, а иногда и для информации о сеансе.
  • В папке поставщика устанавливаются зависимости CakePHP и других приложений. Сделайте личное обязательство не редактировать файлы в этой папке.
  • Каталог webroot является открытым корнем документа вашего приложения. Он содержит все файлы, которые вы хотите публично достигать.

Убедитесь, что существуют папки tmp и logs и доступны для записи, в противном случае производительность вашего приложения сильно пострадает. В режиме отладки CakePHP предупредит вас, если это не так.

Внутри папки src

В папке src CakePHP вы найдете большую часть своей разработки приложений.

Консольная папка содержит консольные команды и консольные задачи для вашего приложения. Дополнительные сведения см. В разделе «Корпуса, задачи и инструменты консоли».

Папка контроллера содержит контроллеры вашего приложения и их компоненты.

Папка Locale хранит строковые файлы для интернационализации.

Папка Model содержит таблицы, сущности и поведение вашего приложения.

View — здесь представлены классы презентаций: ячейки, помощники и файлы шаблонов.

Шаблон — презентационные файлы размещаются здесь: элементы, страницы ошибок, макеты и файлы шаблонов просмотра.

Установка или настройка

Требования

Следующее руководство по установке предназначено для cakephp 2.8 и выше. Все версии cakephp ниже 2.8 не совместимы с php 7

HTTP-сервер. Например: Apache. Наличие mod_rewrite является предпочтительным, но отнюдь не обязательным.

  • PHP 5.5.9 или больше (включая PHP 7).
  • Расширение PHP mbstring
  • встроенное расширение PHP

Внимание! Как в XAMPP, так и в WAMP, расширение mbstring работает по умолчанию. В XAMPP включено расширение intl, но вы должны раскомментировать расширение php_intl.dll в php.ini и перезапустить сервер через панель управления XAMPP. В WAMP расширение по умолчанию «активировано» по умолчанию, но не работает. Чтобы заставить его работать, вы должны пойти в папку php (по умолчанию) C: \ wamp \ bin \ php \ php , скопировать все файлы, которые выглядят как icu * .dll, и вставить их в каталог apache bin C: \ WAMP \ Bin \ Apache \ апача <версия>\ Bin. Затем перезапустите все службы, и все будет в порядке.

Хотя механизм базы данных не требуется, мы предполагаем, что большинство приложений будут использовать его. CakePHP поддерживает различные механизмы хранения базы данных:

  • MySQL (5.1.10 или выше)
  • PostgreSQL
  • Microsoft SQL Server (2008 или выше)
  • SQLite 3


Требования

Обычно я делаю установку apache и mysql на linuxbox. Я тоже могу использовать окна, но я не рекомендую это;) Итак, я обычно делаю новую запись в файле / etc / hosts, чтобы сделать sitename доступным для cakephp.

следующий шаг для копирования всех файлов cakephp в подкаталог внутри / home / myusername / public_html / caketest

то я настроил сайт на apache (не обязательно),

DocumentRoot «/ home / myusername / public_html / caketest» Имя_сервера caketest.local
# Это должно быть опущено в производственной среде SetEnv APPLICATION_ENV development

перезапустите apache. вам также необходимо отредактировать файлы .htaccess и поместить директиву RewriteBase с помощью пути hte к фактическому каталогу, например

создать базу данных, установить соединение db в файлах конфигурации торта, и все. вы можете указать свой браузер на http: //caketest.local, если вам не нужен URL-адрес тестового сайта, вы можете пропустить хосты и создание Apache-vhost, но URL-адрес должен быть http: / localhost /

еще одна важная вещь — включить userdir modul в apache, а также проверить, разрешено ли использование php в userdirs.

Видеокурс «Фреймворк CakePHP: с Нуля до Гуру на примере создания корпоративного сайта». (Андрей Кудлай — Webformyself)

Автор(ы): Андрей Кудлай

Первый и единственный в Рунете исчерпывающий видеокурс на тему работы с фреймворком CakePHP… Уже в ближайшие 2 месяца вы из полного новичка веб-программирования превратитесь в профессионала, которому по зубам будут даже очень сложные и дорогие веб-проекты… Если вы будете посвящать всего лишь 2-3 часа в день изучению материалов курса, то уже менее чем через 60 дней вы уверенно сможете создавать сайты любой сложности, используя фреймворк CakePHP. Вы создадите свою первую страничку вашего будущего сайта уже во время прохождения первых занятий курса. Если у вас не получится либо вы решите, что этот курс вам не подходит, то я верну вам все потраченные деньги обратно!

Смотреть видео:

Фреймворк CakePHP: с Нуля до Гуру на примере создания корпоративного сайта. (Андрей Кудлай — Webformyself)

  • Часть 1. Фреймворк CakePHP. Изучаем теорию и возможности фреймворка

Первая часть курса будет посвящена изучению возможностей, которые предлагает нам фреймворк CakePHP. Здесь мы лишь прикоснемся к его огромным возможностям и попробуем применить их на практике при создании простейшего блога. В процессе изучения теории, мы будем также учиться работать с документацией. Как уже отмечалось, актуальной русскоязычной документации – просто нет. Однако официальная документация на английском языке довольно хороша, и уметь ею пользоваться – это практически обязательное требование при работе с фреймворком CakePHP. После изучения данной части Вы научитесь пользоваться документацией на официальном сайте фреймворка CakePHP, изучите базовые возможности фреймворка, а также создадите простейшее приложение – блог.

ВИДЕОУРОКИ ПЕРВОЙ ЧАСТИ КУРСА:

В первом уроке курса мы пройдемся по организационным моментам, рассмотрим структуру курса, узнаем основные источники документации, с которой будем работать на протяжении всего курса. Также обозначим необходимое программное обеспечение (сервер, редактор, версия фреймворка CakePHP)

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

  • Урок 3: Установка консоли CakePHP

CakePHP, как и многие фреймворки, имеет генератор кода. Код генерируется с помощью специальной консольной утилиты CakePHP’s Bake console. Если нам нужно построить несложное работающее приложение с системой управления, не заморачиваясь с написанием кода, тогда консоль Кейка – то, что нужно. В этом уроке мы установим консоль кейка и рассмотрим нюансы ее установки

  • Урок 4: URL-адреса фреймворка CakePHP

Более плотно приступим к изучению фреймворка CakePHP и познакомимся со структурой URL-адресов Кейка. CakePHP уже по умолчанию работает с чистыми или, так называемыми ЧПУ-адресами (ЧПУ – Человеку Понятный УРЛ). При этом каждая часть (сегмент) этого адреса является значимой. Также CakePHP позволяет изменять имеющиеся по умолчанию адреса на любые другие, нужные нам, предоставляя для этих целей гибкие возможности раутинга (маршрутизации)

  • Урок 5: Соглашения об именованиях. Контроллеры

В этом уроке мы с Вами познакомимся с соглашениями или конвенциями об именованиях. Данные соглашения дают рекомендации по тому, как называть файлы, классы, методы и таблицы базы данных в разрабатываемом проекте. Следуя конвенциям, мы значительно облегчаем процесс разработки сайта и знакомимся с таким понятием, как магия Кейка (automagic). Также в этом уроке мы создадим свой первый контроллер

Контроллеры в паттерне MVC постоянно взаимодействуют с видами. Для того, чтобы наш вид получился динамическим, необходимо передавать в вид те или иные данные, которые часто получаем из базы данных. В этом уроке мы с Вами изучим метод set(), позволяющий передавать данные из контроллера в вид

  • Урок 7: Метод модели find(). Часть 1

Основа любого динамичного сайта заключается в хранении информации в базе данных и получении информации оттуда. За работу с базой данных в Кейке отвечает модель, методы которой можно использовать в контроллере. Один из таких методов – метод find(). Используя этот метод, мы можем получить информацию из базы данных. Ну а комбинируя параметры метода find(), мы можем гибко управлять получением данных

  • Урок 8: Метод модели find(). Часть 2

В этом уроке мы продолжим работу с параметрами метода find(). Вы увидите, как легко данный метод позволяет не только получить данные определенного поля или всей таблицы, но возвращает их в уже удобном для нас готовом массиве. Например, используя один только метод find(), всего одной строкой кода мы можем получить уже готовый к использованию массив, представляющий из себя дерево

  • Урок 9: Магические типы метода find()

Текущий урок мы также продолжим изучением метода find(). В данном уроке мы познакомимся с так называемыми магическими типами (Mafic Find Types). Используя этот метод и зная название поля (или полей), из которого необходимо получить данные, мы можем легко это сделать, не используя никаких дополнительных параметров. При этом здесь возникает столь много вариантов получения данных, что мы буквально можем экспериментировать с ними

  • Урок 10: Выводим данные в шаблон

Итак, мы научились получать и передавать данные в шаблон. Теперь пришла очередь познакомиться детальнее с еще одной составной частью паттерна MVC – видами. В этом уроке мы создадим файлы видов и выведем на экран полученные в них данные

  • Урок 11: Вывод отдельной статьи

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

В этом уроке мы познакомимся с еще одним методом модели – методом exists(). Этот метод очень полезен, когда нам необходимо просто проверить существование в базе данных той или иной записи

Фреймворк CakePHP предоставляет разработчикам 2 незаменимые вещи, ускоряющие процесс разработки – Хелперы (Heplers) и Компоненты (Components). Используя Хелперы и Компоненты, мы можем удобнее работать с сессиями, формами, легко и быстро создать постраничную навигацию для статей и прочая, и прочая. Кейк предлагает как уже готовые Компоненты и Хелперы, которыми мы можем пользоваться, так и возможность создавать собственные Компоненты и Хелперы

  • Урок 14: Хелпер для работы с формами

Одним из ключевых и часто используемых хелперов, является хелпер по работе с формами (Form Helper). Изучив работу с этим помощником, мы без труда создадим форму, которую можно использовать для сохранения информации в базу данных или отправки формы на Email. При этом помощник Form Helper позволяет не только создавать формы, но и автоматически заполняет их данными и буквально догадывается о том, какой тип поля формы необходимо сгенерировать

  • Урок 15: Добавляем данные в БД

Познакомившись с хелпером для работы с формами, мы с Вами теперь без проблем можем генерировать нужные нам HTML-формы. В этом уроке мы изучим сразу несколько методов, позволяющих сохранять информацию из форм в базу данных. Ключевыми здесь являются методы create() и save(). Последний метод напрямую предназначен для сохранения данных. При этом нам не нужно заботиться о получении данных из каждого конкретного поля. Достаточно вызвать метод, передать ему объект данных, и метод save() сделает все остальное

  • Урок 16: Валидация данных в CakePHP

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

В этом уроке мы изучим работу с методом delete(). Как следует из названия, данный метод предназначен для удаления записей из базы данных. Также, используя этот метод, мы можем организовать каскадное удаление зависимых данных

В этом уроке мы изучим работу с Элементами (elements). Элементы используются в видах для того, чтобы в них можно было вынести повторяющиеся участки кода и затем многократно использовать в других видах. Например, мы вполне можем вынести в Элемент код меню или сайдбар

В этом уроке мы создадим еще одну функцию для управления нашим блогом – это будет функция редактирования данных. Для данного функционала мы воспользуемся уже знакомым нам методом save(), позволяющим сохранять данные в БД

  • Урок 20: Ассоциации и связи моделей

Одна из наиболее приятных и мощных возможностей CakePHP – ассоциации моделей. Эта возможность является одной из составляющих магии Кейка. Используя ассоциации, мы можем организовать всего одной строкой кода связи между различными таблицами базы данных. Благодаря установленным связям, нам не нужно писать запросы для получения дополнительных данных, эти данные Кейк любезно предоставит нам автоматически, используя ту самую автомагию (automagic)

  • Урок 21: Работаем с категориями

В этом уроке мы продолжим написание нашего приложения – блога. В уроке мы поработаем с категориями постов и закрепим на практике получение данных из БД и оперирование этими данными

  • Урок 22: Зависимость моделей на практике

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

Фреймворк CakePHP предоставляет специальный метод, позволяющий гибко работать с видами – это метод render(). Данный метод неявно вызывается в конце каждого экшена контроллера, подгружая вид по умолчанию. Но Кейк позволяет вызывать данный метод в любом месте кода контроллера, тем самым указывая, какой вид необходимо загрузить

  • Урок 24: Работа с темами в CakePHP

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

  • Урок 25: Приготовление кода в консоли (Cake Bake)

В данном уроке мы вернемся к вопросу работы с консольной утилитой Кейка, позволяющей «испекать код» (Cake Bake). В качестве примера мы приготовим с нуля коды Контроллера, Модели и Вида нашего простого сайта. При этом на приготовление кода мы потратим считанные минуты, ни единой строчки кода мы не будем писать самостоятельно, и весь сгенерированный код будет абсолютно рабочим

  • Урок 26: Регистрация и авторизация. Часть 1

В последних трех уроках первой части курса мы поработаем с компонентом Auth. Данный компонент позволяет не только ограничить доступ к определенным частям сайта или ко всему сайту целиком, но и организовать систему регистрации и авторизации, организовать работу с ролями

  • Урок 27: Регистрация и авторизация. Часть 2

В этом уроке мы продолжим работу с компонентом фреймворка CakePHP – Auth, позволяющим организовать работу с учетными записями пользователей

  • Урок 28: Регистрация и авторизация. Часть 3

В этом уроке мы завершим работу с компонентом фреймворка CakePHP – Auth, позволяющим организовать работу с учетными записями пользователей

  • Часть 2. Разработка сайта с использованием фреймворка CakePHP

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

Основа данного сайта – каталог товаров. Функционал, который будет нами реализован в курсе:

  • категории
  • товары
  • карточка товара
  • страницы
  • авторизация
  • многоуровневое меню категорий с поддержкой неограниченного уровня вложенности
  • и, конечно же, управление всем этим, т.е. администраторская часть сайта.

После изучения данной части Вы закрепите на практике все изученное в первой части курса, а также почерпнете для себя много новой информации и возможностей.

ВИДЕОУРОКИ ВТОРОЙ ЧАСТИ КУРСА:

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

  • Урок 2: Создаем первый контроллер сайта

Во втором уроке мы начнем превращать пока что статичный шаблон в динамичную страницу нашего сайта. Здесь мы создадим свой первый контроллер, который будет работать с главной страницей сайта и заниматься выводом новинок товаров на главную страницу сайта

  • Урок 3: Формируем многоуровневое меню. Часть 1

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

  • Урок 4: Формируем многоуровневое меню. Часть 2

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

  • Урок 5: Создаем компонент меню

Итак, мы создали многоуровневое меню, и оно замечательно работает. Однако, пока что это меню работает только на главной странице. Нам же необходимо, чтобы меню было доступно на всех страницах сайта. Чтобы избежать дублирования кода, мы создадим собственный компонент – компонент Меню – который будем использовать на всех страницах сайта

В этом уроке мы займемся реализацией блока Новые товары на главной странице. К слову, навигация по данному блоку реализована в шаблоне с довольно привлекательным эффектом. Итак, мы выведем все имеющиеся на сайте новинки товаров и реализуем навигацию по блоку новинок

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

  • Урок 8: Выводим товары категорий

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

Данный урок будет посвящен работе с постраничной навигацией (пагинацией). В теоретической части мы не затрагивали этот момент, здесь же мы детально его изучим. Для работы с пагинацией CakePHP предлагает специальный Компонент и Хелпер, которые, работая в паре, сделают реализацию пагинации предельно простой задачей

  • Урок 10: Меню категорий в сайдбаре

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

Поскольку основа создаваемого нами сайта – это каталог товаров, соответственно, нам необходима карточка товара, в которой мы отобразим детальную информацию по выбранному товару. В этом уроке мы займемся реализацией карточки товара, создав необходимые контроллер, модель и вид

Поиск – это практически неотъемлемый элемент любого сайта. Ну а если говорить о каталоге товаров, то поиск – обязательный элемент, поскольку найти нужный товар среди всего многообразия товаров на сайте, порой, возможно только через поиск. В данном уроке мы реализуем поиск по товарам для нашего сайта

Наш шаблон предполагает не только меню категорий, но и меню страниц, которое так же, как и меню категорий, должно присутствовать на всех страницах нашего сайта. В этом уроке мы создадим меню страниц, и при его создании мы будем использовать уже созданный нами ранее компонент Меню

В этом уроке мы с Вами поработаем с еще одним компонентом Кейка – CakeEmail. Данный компонент представляет собой класс, позволяющий работать с отправкой писем на email. На нашем сайте есть страница контактов, которая может предполагать наличие контактной формы. Давайте создадим такую форму и реализуем логику отправки данных из нее на email

  • Урок 15: Архитектура админской части


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

  • Урок 16: Ограничиваем доступ к админке

Данный урок будет посвящен ограничению доступа к админской части сайта. Мы воспользуемся уже знакомым нам компонентом Auth, создадим форму авторизации и ограничим доступ к админским экшенам

Итак, мы добрались до управления товарами. В этом уроке мы реализуем редактирование товара. Администратор сможет изменять название, описание товара, его цену и прочие данные, а также перемещать его в нужную категорию

  • Урок 18: Дерево категорий товара

В этом уроке мы реализуем дерево категорий товара для админки. За основу возьмем аналогичное дерево из пользовательской части и внесем в него некоторые правки, чтобы данный компонент одинаково хорошо работал как в пользовательской части, так и в админке

  • Урок 19: Устанавливаем визуальный редактор

Обязательным компонентом админской части является визуальный редактор, поскольку администрировать сайт может пользователь, который впервые слышит слово HTML. Соответственно, мы должны сделать удобным процесс редактирования даже для таких пользователей. В этом уроке мы установим и настроим визуальный редактор CKEditor, а также интегрируем файловый менеджер KCFinder. В процессе мы узнаем нюансы установки и настройки подобных вещей в CakePHP

В этом уроке мы реализуем функционал добавления товара. Здесь все будет предельно просто, поскольку данный функционал очень напоминает реализованный ранее функционал редактирования товара

Последним действием по управлению товаром будет его удаление, которое мы и реализуем в текущем уроке

Основываясь на реализованном ранее функционале управления товарами, мы можем легко реализовать управлением страницами. Здесь мы наглядно увидим, как фреймворк облегчает нам жизнь при написании кода. Фактически весь необходимый функционал – добавление, редактирование и удаление страниц – мы реализуем за один текущий урок

  • Урок 23: Управление метаданными

В этом уроке будет показано, как организовать управление метаданными страниц Вашего сайта. Мы выведем название страницы (title), ее ключевые слова (keywords) и описание (description)

  • Урок 24: Управление категориями

Данный урок будет посвящен реализации функционала по управлению категориями. Здесь мы должны учесть ряд нюансов при удалении категории: запретить удаление категорий, в которых есть дочерние категории или товары. Предусмотрев эти нюансы, мы сохраним целостность базы данных

  • Урок 25: Загрузка картинок. Часть 1

Последние два урока мы посвятим работе с загрузкой картинки товара и ее ресайза. В этих уроках мы львиную долю работы будем проводить в модели, используя правила валидации при загрузке файлов, которые предлагаются фреймворком. Также мы создадим собственное правило валидации и опишем методы, работающие с данным правилом. В итоге будет реализован функционал по загрузке картинок и их ресайзу

  • Урок 26: Загрузка картинок. Часть 2

В данном уроке мы продолжим реализацию функционала по загрузке и ресайзу изображений для товаров

Какие перспективы у CakePHP?

Добрый день!
Выбираю php-фреймворк для дальнейшего обучения. Знание PHP начальные.
Посмотрел несколько популярных:

  • Yii
  • Laravel
  • Kohana
  • CakePhp

Из несложных вроде последние 2.
Но склоняюсь к CakePhp, понравилась система соглашений!
Php и так настолько «гибкий», что больше на бардак походит.

Однако не вижу каких-то движений в русско-яз. сообществе(
Подскажите, есть ли смысл продолжать? Не хотелось бы забивать голову, чем-то неактуальным и тратить по-напрасно время.
Спасибо!

  • Вопрос задан более трёх лет назад
  • 2177 просмотров

Посмотрел несколько популярных:
Yii
Laravel
Kohana
CakePhp
Из несложных вроде последние 2.

Kohana мертв, CakePhp не развивается, Laravel и Yii по качеству кода не фонтан (к тому же Yii страдает синдромом nih).
Лучше посмотрите на Symfony.

Однако не вижу каких-то движений в русско-яз. сообществе(

> Лучше посмотрите на Symfony.

Да, Симфони спроектирована грамотно. Всё сделано красиво, но порой, когда требуется сделать что-то нестандартное, хочется убить себя.

Поэтому бессмысленно создавать комьюнити фреймворка на русском языке, а не на английском, который знают все.

когда требуется сделать что-то нестандартное, хочется убить себя.

Sashkett: Максим Тимофеев: кроме увеличения порядкового номера версии надо и код модифицировать.

> Всё сделано красиво, но порой, когда требуется сделать что-то нестандартное, хочется убить себя.
Наоборот, проще всего это сделать в симфони: очень гибкие и слабо связанные компоненты.
В других фреймворках все сложнее.

CobaltTheTerrible: Это статья я уже читал.

Я же хотел услышать о вашем случае, а именно о том что за «нестандартная» задача из за которого хочется убит себя? мне правда интересно

Sashkett: попсовый == популярный. Трушные чуваки не юзают фреймворки (эра композера все таки). Берешь раутер, кернел какой PSR-7 совместимый, DI контейнер и вперед к свершениям).

А кейки и кохаты, как и код игнайтеры если и не мертвы то должны умереть.

Хотите гибкости — Symfony/Zend/Laravel.

Хотите практиковать persistence ignorance и DDD, абстрагировать бизнес логику от фреймворков, делать сложные приложения — то выкидываем Active Record или используем его исключительно как DAO.

Хотите писать CRUD — без разницы тогда что вы возьмете, все примерно одинаковое. Но у Laravel/Symfony есть преимущество в виде LTS релизов. Есть ли LTS релизы у зэнда — не вкурсе. Yii2 можно потыкать только потому что рускоязычное сообщество большое и архитектура в принципе схожа с ларкой.

CobaltTheTerrible: вы же поняли сарказм? В целом я не вижу в подходе с собиранием проекта из компонентов ничего плохого, только на это надо время дополнительное. А так есть чудные правила 12-ти факторных приложений, следуя которым ада и холокоста в коде быть не должно быть особо. Ну и да, если мы будем использовать отдельные компоненты то это ничем не будет отличаться от той же Symfony.

В целом я согласен, новичкам только фулстэк фреймворки готовые. Браться за сооружение своего можно только поработав хорошенько с уже существующими фреймворками и только если они вас чем-то ограничивают.

Курсы CakePHP с созданием полнофункционального приложения

Новая статья от InBenefit, и на очереди еще один отличный PHP-фреймворк для разработки веб-приложений. То, что их так много, вовсе не удивительно, ведь PHP входит в пятерку популярных языков программирования по версии GitHub, уступая лишь JavaScript, Java и Ruby. Сегодня мы представляем вашему вниманию еще один программный каркас, на который стоит обратить внимание. Это CakePHP.

Созданный по принципу открытого программного обеспечения, программный фреймворк CakePHP разработан с реализацией шаблона MVC. В качестве основы был использован не менее известный фреймворк Ruby on Rails с заимствованием из него многих удачных идей. От аналогичных фреймворков отличается поддержкой PHP4/5. На том же GitHub CakePHP находится в четверке самых популярных PHP-технологий, на которой создано больше 130 тысяч проектов.

Достоинства CakePHP:
— улучшенное управление сессиями для простого тестирования и поддержка PHPUnit 4.x;
— согласование каркаса приложения и каркасов плагинов;
— упрощение сборки и перекомпоновки за счет возможности использования плагинов в качестве тем;
— сокращение времени обучения для новичков;
— структура, предусматривающая необходимость строгого следования соглашениям, приучает писать код правильно;
— простая адаптация под любые проекты;
— полная и легко читаемая документация.

Хотите выучить CakePHP у опытного преподавателя? Тогда выберите курсы Udemy (15-миллионой площадки для онлайн-обучения), которые наши специалисты подобрали специально для вас. Вы всего в шаге от получения важных дополнительных навыков программирования.

Курсы CakePHP с созданием полнофункционального приложения

Разработка веб-приложений на PHP с CakePHP 2

Преподаватель: IO LEARN (качественная площадка для компьютерного онлайн-обучения)
Стоимость: 20$
Количество студентов: 249+
Объем программы: 22 лекции; 1,5 часа
Уровень подготовки (требования для курса): основы PHP и HTML

Чему вы научитесь?
— Понимать принцип разработки на CakePHP
— Понимать шаблон MVC
— Создавать полноценное приложение
— jQuery AJAX

В программе этого курса предусмотрено больше 20 интерактивных видеолекций, которые дадут вам начальные знания по веб-разработке на одном из лучших фреймворков – CakePHP. Всего за каких-то полтора часа вы освоите все, что вам понадобится для профессиональной веб-разработки: от паттерна MVC до создания полнофункционального приложения.

Сначала вы научитесь устанавливать и настраивать CakePHP. Затем вам расскажут, как создавать свою тему и свои компоненты. Для реализации AJAX-функций в разрабатываемом приложении вы глубже изучите jQuery.

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

Передовые методы разработки на CakePHP 3

Преподаватель: IO LEARN
Стоимость: 20$
Количество студентов: 44+
Объем программы: 21 лекция; 50 минут
Уровень подготовки (требования для курса): основы PHP и HTML; иметь базовые знания о разработке на CakePHP (пройти первый курс из нашей подборки)

Чему вы научитесь?
— Принципы работы с CakePHP 3.x
— Повышать безопасность разработанных приложений
— Использовать компонент CSRF
— Реализовывать функции CAPTCHA в своих приложениях
— Регистрировать все события в приложении в базе данных
— Использовать плагин DataTables для jQuery
— Использовать TimeHelper

Если первый курс в нашем обзоре начальный, в котором можно узнать основные принципы разработки на CakePHP, то этот курс его своеобразное продолжение.

В рамках программы курса вас научат реализовывать защиту приложения с помощью компонента от межсайтовой подделки запроса (CSRF). Вы научитесь регистрировать события, происходящие в вашем приложении, и сохранять их в базу данных MySQL. Также вы изучите основные отношения (BelongsTo, HasOne, HasMany и BelongsToMany) и оцените в действии ассоциации и «жадную загрузку». Кроме того, вас научат работать с TimeHelper и избегать появления многих ошибок MySQL. Вы также сами реализуете поведение базы данных.

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

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

Перед началом обучения на любом из представленных курсов вам обязательно нужно иметь базовые знания PHP и HTML. Соответственно, советуем пройти курсы PHP и HTML.

Установка CakePHP на сервер Ubuntu 12.04

Что такое CakePHP?

CakePHP – это мощный и надежный PHP-фреймворк, основанный на архитектуре Model-View-Controller (MVC, или «Модель-Представление-Контроллер»). Он очень гибкий, что позволяет ускорить и упростить процесс разработки; кроме того, фреймворк предоставляет базовую структуру для организации имен файлов, классов и таблиц базы данных, благодаря чему разработка проекта остается последовательной и логичной от начала и до конца.

Минимальные требования CakePHP: веб-сервер и PHP 5.2.8+. Хотя данный фреймворк, как правило, запускают на Apache, он также отлично работает на других веб-серверах (как Lighttpd или Microsoft IIS). Поскольку базы данных являются неотъемлемой частью большинства веб-приложений, CakePHP поддерживает ряд СУБД, таких как MySQL, PostgreSQL, Microsoft SQL или SQLite (с расширениями PDO).

Данное руководство покажет, как установить и начать работу с CakePHP. Для этого понадобятся настроенные облачный сервер и веб-сервер. Все действия руководства выполнены в операционной системе Ubuntu на веб-сервере Apache (+ PHP и MySQL).

Установка CakePHP

Существует несколько способов установки CakePHP на виртуальный выделенный сервер. Можно скачать и распаковать архив с сайта CakePHP, клонировать релиз фреймворка с Github при помощи Git или же использовать библиотеку PEAR. В данном случае удобнее воспользоваться первым способом установки CakePHP (с сайта проекта), поскольку он самый простой.

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

cd /var/www
wget https://github.com/cakephp/cakephp/zipball/2.3.9

Это загрузит zip-файл с релизом. Теперь его нужно распаковать. Если инструмент unzip еще не установлен, выполните следующую команду, чтобы быстро установить его:

sudo apt-get install unzip

Теперь можно распаковать архив (скачав другую версию фреймворка, не забудьте заменить имя файла):

Должна появиться новая папка, содержащая все файлы CakePHP. Переименуйте ее, выбрав более удобное имя (например, project):

mv cakephp-cakephp-4b9e390 project

Итак, на данный момент CakePHP загружен и находится в папке /var/www/project.

Теперь нужно изменить права доступа к папке app/tmp; CakePHP нужно будет выполнить в ней некоторые действия, потому веб-сервер должен иметь право на запись в ней. Для Apache запустите следующие команды в папке /var/www/project:

cd project
chown -R root:www-data app/tmp
chmod -R 775 app/tmp

Это изменит владельца папки, передав все права пользователю root и папке www-data (в которую также входит пользователь www-data, используемый Apache для запуска процессов). Вторая команда устанавливает права на папку таким образом, чтобы группа www-data могла вносить в нее изменения.

Перезапись URL-адресов

Поскольку CakePHP намного продуктивнее работает с чистыми URL-адресами, нужно проверить, позволяет ли веб-сервер перезаписывать URL. Для этого должен быть включен модуль Apache по имени mod_rewrite; кроме того, виртуальный хост должен разрешать файлам .htaccess переопределить инструкции Apache. Итак, для начала убедитесь в том, что mod_rewrite включен; это делается с помощью следующей команды:

Если появившийся список содержит rewrite_module, модуль уже включен. В противном случае используйте команду:

Далее нужно отредактировать виртуальный хост Apache по умолчанию и задать строке Allow Overrides значение All для каталога /var/www (если это не было сделано ранее). Откройте файл для редактирования с помощью следующей команды:

Найдите следующий блок кода и внесите в него соответствующие изменения:

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

Теперь файлы .htaccess могут переопределять инструкции Apache по умолчанию.

Примечание: после внесения любых изменений в настройки Apache необходимо перезапустить веб-сервер:

sudo service apache2 restart

Дополнительные настройки

Теперь, когда функция перезаписи URL-адресов включена, нужно установить некоторые связанные с безопасностью настройки CakePHP, а именно salt и seed. salt – это пользовательская строка, которая нужна CakePHP для хэширования, а seed – это пользовательское число, используемое для шифрования. Их лучше настроить сейчас, чтобы не возвращаться к этому позже. К слову, главная страница приложения CakePHP выведет два больших красных уведомления, если этого не сделать.

Отредактируйте файл core.php, расположенный в папке app/Config; найдите в нем следующий блок кода:

/**
* A random string used in security hashing methods.
*/
Configure::write(‘Security.salt’, ‘DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi’);
/**
* A random numeric string (digits only) used to encrypt/decrypt strings.
*/
Configure::write(‘Security.cipherSeed’, ‘76859309657453542496749683645’);

В целом, на разных серверах строки и числа могут отличаться; но установить новые значения, которые невозможно угадать, нужно именно в этом разделе кода. Убедитесь, что строка cipherSeed содержит только цифры.

Сохраните и закройте файл.

Подключение к базе данных

Хотя база данных не является обязательным компонентом CakePHP, большинству веб-приложений БД необходима для хранения информации. На данном этапе нужно настроить подключение к базе данных MySQL.

Примечание: чтобы узнать, как перейти с MySQL на MariaDB, читайте данное руководство.

Итак, создайте БД с некоторым контентом и сообщите о ней CakePHP (эта БД понадобится для выполнения следующего руководства, в котором речь идет о разработке простого примера приложения). Базы данных с одной таблицей из 5 столбцов будет достаточно; столбцы должны содержать идентификатор, название, текст, а также даты создания и изменения, потому им нужно присвоить соответствующие имена: id, title, body, created, modified. Первый столбец должен содержать целое число с автоматическим увеличением (AUTO_INCREMENT PRIMARY KEY); второй – VARCHAR (500); третий – текст поста (TEXT); и последние два столбца – DATETIME.

В данном уроке база данных будет называться cake, а таблица – posts. На самом деле, именование таблиц и файлов играет очень важную роль в CakePHP: данный фреймворк работает намного продуктивнее при соблюдении соглашения об именах. Подробнее этот вопрос затрагивается в следующем руководстве.

Итак, нужно выполнить пару команд. Войдите в MySQL или MariaDB. Базу данных можно создать при помощи консоли:

create database cake;

Затем в этой БД можно создать таблицу со всеми перечисленными выше столбцами. Но сначала нужно подключиться к базе данных:

Теперь создайте таблицу:

CREATE TABLE posts (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
body TEXT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);

Затем внесите в нее контент:

INSERT INTO posts (title,body,created)
VALUES (‘Title 1’, ‘Some body text.’, NOW());

Эта команда внесет в таблицу новую строку.

Теперь нужно настроить CakePHP, чтобы фреймворк мог использовать эту БД. Для начала скопируйте файл database.php.default, расположенный в папке /app/Config/, и назовите его database.php. Затем откройте файл и внесите в него следующий блок кода (замените cakeBlog и а1b3-А2B4 своим логином и паролем mysql).

public $default = array(
‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘port’ => »,
‘login’ => ‘cakeBlog’,
‘password’ => ‘а1b3-А2B4’,
‘database’ => ‘cake’,
‘schema’ => »,
‘prefix’ => »,
‘encoding’ => ‘utf8’
);

Как видите, нужно просто предоставить свою индивидуальную информацию о соединении базы данных. Сохраните файл и закройте его. Откройте браузер и направьте его на папку, в которой был размещен фреймворк CakePHP при установке (в данном случае это папка project) из root папки веб-сервера:

Должна появиться домашняя страница нового приложения CakePHP; благодаря выполненной ранее настройке все сообщения должны быть зелеными (кроме сообщения о DebugKit – дополнительной внешней библиотеке).

Если же PHP сообщает об ошибке часового пояса, раскомментируйте следующую строку в файле core.php, расположенном в папке app/Config:

Итоги

Данное руководство продемонстрировало процесс установки и настройки CakePHP на облачном сервере. Следующее руководство этой серии покажет, как создать простое приложение CakePHP, взаимодействующее с БД, созданной в ходе данного урока.

Как установить DebugKit на CakePHP

Я изучаю, как работать с CakePHP , и я настроил все в порядке, но теперь я получаю это предупреждение:

DebugKit is not installed. It will help you inspect and debug different aspects of your application. You can install it from github

Я уже нажал на эту ссылку и загрузил это приложение, но я понятия не имею, где разместить эти папки. Я использую EasyPhp как мой веб-хостинг.
Также Здесь Я последовал за шагами,
и есть:

Но я не знаю, как call что-то здесь, есть ли подсказка?

Как установить DebugKit для CakePHP (всего за 4 простых шага!):

ШАГ 1 (вариант A): традиционный/загружаемый метод:

Создайте папку DebugKit в вашем каталоге app/Plugin и поместите в нее содержимое загрузки (а не папку верхнего уровня — материал внутри нее). Если вы знаете, как клонировать из github, это тоже прекрасно работает.

ШАГ 1 (вариант B): метод композитора

В настоящее время это самый популярный вариант (и не зря). Если вы уже используете Composer [подробнее об этом здесь], то добавление DebugKit безумно-простое. Если вы раньше не использовали Composer, не волнуйтесь — просто используйте «вариант A» выше. Конечный результат тот же, и это тоже легко.

Убедитесь, что require присутствует в composer.json. Это установит плагин в плагин /DebugKit:

ШАГ 2:

Затем в app/Config/bootstrap.php добавьте (или не комментируйте) следующую строку:

Наконец, в вашем app/Controller/AppController.php файле (внутри класса) добавьте:

(Если у вас уже есть массив $components , то просто добавьте его — не переустанавливайте его.)

ШАГ 3: убедитесь, что отладка 1 или более

В вашем файле Config/core.php убедитесь, что эта строка:

ШАГ 4: Удалите sql_dump :

В вашем файле макета удалите элемент sql_dump (внизу макета по умолчанию)

В соответствии с разделом «Установка» на странице debugKit:

  • Clone/Скопировать файлы в этот каталог в приложение /Plugin/DebugKit
  • Убедитесь, что плагин загружен в app/Config/bootstrap.php, вызывая CakePlugin:: load (‘DebugKit’);
  • Включите компонент панели инструментов в AppController.php: public $components = array (‘DebugKit.Toolbar’);
  • Установите режим отладки как минимум на 1.
  • Обязательно удалите элемент sql_dump из макета, если вы хотите испытать удивительный, который является журналом SQL отладки.

Как узнать, работает ли он?

В правом верхнем углу вашего сайта вы увидите небольшую иконку на сером квадрате. Нажмите на это, чтобы развернуть параметры, затем нажмите на параметр, чтобы начать быть удивительным.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих