CakePHP. Быстрый старт.
Что-то я все чаще стал натыкаться на посты о Ruby On Rails, MVS и разных php-фреймворках. Думаю, пора обратить свое пристальное внимание на эту область веб-разработки
С этого поста начну рассматривать один из самых популярных php-фреймворков на сегодняшний день – CakePHP.
Мы уже рассматривали различные js-фрейморки – jQuery и Dojo. Суть php-фреймворков все та же – упростить процесс разработки приложения.
Фреймворк CakePHP имеет архитектуру MVC (Model-Viewer-Controller) – “Модель-Вид-Представление”. Суть этой архитектуры заключается в разделении приложения на три составляющих – модель данных, пользовательский интерфейс и управляющая логика. Причем архитектура спроектирована так, что изменения одного из компонентов практически не отражается на других двух.
Ключевым моментом тут является то, что представление и поведение зависят от модели, модель не зависит ни от представления, ни от поведения. Подобная организация позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.
С официального сайта CakePHP.org я скачал последнюю стабильную версию для своих экспериментов. После распаковки архива внутри вы увидите несколько папок: app, cake, docs и vendors.
Вот их предназначение:
- App – ваше приложение
- Cake – ядро фреймворка
- Docs – ну тут документация небольшая, лицензия, все дела.
- Vendors – тут можно будет складывать сторонние библиотеки
Раз все наше приложение будет находиться внутри папки app, следует разобраться, что там к чему. А внутри этой папки находится еще несколько папок: config, controllers, models, plugins, tmp, vendors, views, webroot.
С папкой config понятно – тут лежат конфиги фреймворка, конфиги для работы с базой данных и т.д.
Сontrollers, views и models соответственно будут содержать наше приложение разделенное на три компоненты, которые я упоминал ранее.
Plugins и vendors – плагины и сторонние библиотеки “быстрого доступа”, которые можно будет подгружать средствами фреймворка.
Tmp – тут временные файлы фрейморка (логи, кэш, сессии и т.д.).
Webroot – это, собственно, рабочая папка нашего проекта, которая также будет содержать папки с картинками, css-файлами и js-криптами.
Переходим к практической части.
Итак, быстрый старт.
Переносим содержимое архива в корень веб-сервера.
Создаем /app/models/post.php
class Post extends AppModel { var $name = "Post"; }
/app/controllers/posts_controller.php
class PostsController extends AppController { var $name = "Posts"; function index() { $this->set('posts',$this->Post->findall()); } }
/app/views/posts/index.ctp
<h1>Посты:</h1> <?php foreach($posts as $post) { ?> <h2><?php echo $post['Post']['id'];?>. <?php echo $post['Post']['name'];?></h2> <p><?php echo $post['Post']['post'];?></p> <? } ?>
Теперь создаем таблицу в БД.
CREATE TABLE posts ( id INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(255) DEFAULT '', post TEXT NOT NULL, PRIMARY KEY (id) );
Все. Если Вы не забыли прописать настройки в файле /app/config/database.php, то при заходе на страницу /posts/index будет выведен список всех постов.
Действительно быстро Как и обещали разработчики. А мы в следующих постах посмотрим, на что еще этот фреймворк способен.
А на сегодня все. Удачи!
У вас ошибка, в самом первом предложении, правильно будет MVC…
нашел, /config/core.php - debug = 1
говорит URL не найден при переходе на /posts/index
в чем может быть проблема?
Missing Controller
Error: PostsController could not be found.
Error: Create the class PostsController below in file: app\controllers\posts_controller.php
Notice: If you want to customize this error message, create app\views\errors\missing_controller.ctp
Что то ошибку выдает, как в предыдущем комментарии, что нужно исправить? Или сайт разработчиков cakephp смотреть?
Ошибка закралась сюда
/app/controllers/posts_controller.php
class PostsController extends AppController {
var $name = “Posts”;
function index() {
$this->set(‘posts’,$this->Post->findall());
}
}
А писАть надо сюда - $this->set(‘posts’,$this->Post->find(‘all’));
Помогите, плз. Сделал все как написано(исправил строку с findall), но при запуске в браузере
Warning: Invalid argument supplied for foreach() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\app\views\posts\index.php on line 2
В чем прикол, не могу понять…
asfasf”>alert(“xss test”);
asfasf”>alert(0);
Доброго дня!
А что продолжение будет или нет..