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 будет выведен список всех постов.

Действительно быстро :) Как и обещали разработчики. А мы в следующих постах посмотрим, на что еще этот фреймворк способен.

А на сегодня все. Удачи!





Читайте также:



9 Ответов на “CakePHP. Быстрый старт.”

  1. TomDeLonge

    У вас ошибка, в самом первом предложении, правильно будет MVC…

  2. zurito

    нашел, /config/core.php - debug = 1

  3. Vasya

    говорит URL не найден при переходе на /posts/index
    в чем может быть проблема?

  4. игорь

    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

  5. Что то ошибку выдает, как в предыдущем комментарии, что нужно исправить? Или сайт разработчиков cakephp смотреть? :-)

  6. Ошибка закралась сюда
    /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’));

  7. Петр

    Помогите, плз. Сделал все как написано(исправил строку с 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

    В чем прикол, не могу понять…

  8. asfasf">

    asfasf”>alert(“xss test”);
    asfasf”>
    alert(0);

  9. Александр

    Доброго дня!

    А что продолжение будет или нет..


© Copyright. . I-Novice. All Rights Reserved. Terms | Site Map