Для того чтобы научиться программировать нужно пробовать программировать самые простые, но функциональные вещи. Чтобы лучше понять как сделать «свой первый самый лучший в мире» сайт — рассмотрим пример элементарного сайта из одного уровня объектов — страниц. Нам нужно
1) создать базу данных с таблицей страницсделано- 2) создать страницы редактирования страниц
2.1) cписок страницсделано- 2.2) форма добавления новой страницы
- 2.3) форма редактирования уже существующей страницы
- 3) создать отображение страниц из базы на сайте
Готовый код, по которому будет идти рассказ что где и почему. Пример простейшего сайта с админкой в связке PHP + AngularJS, первая часть описания
Результат выполнения этой части
Добавление ссылки на добавление новой записи
и обработчки на эту ссылку (#/pages/add)
со связанным шаблоном blocks/page/page-add.html
обратите внимание — тут функция объявленная функция $scope.saveNew вызывается прямо, а переменная используется по прямой ссылке на свои поля — к примеру, привязка ng-model=»new.info» (они в области видимости этого шаблона!)
Серверная часть (обработчик добавления) на PHP
Обратите внимание — метод добавления вызывает путь api/pages/add.json — тут мы можем на самом деле что угодно вызывать, главное возвращать успешно или нет (самый простой вариант) и обновлять список (у нас переход автоматически перегружает объекты из базы. Можно добавлять в коллекцию и прочие методы для убыстрения, но топорный самый простой способ лучше для понимания механики — добавили -> перегрузили
На отработку мы поставили один php файл на все входы — он в папке api/index.php (если он не подгружается — проверьте настройки и подгружает ли Ваш сервер корректно .htaccess
Router::route
Для красоты и структуры мы договариваемся о правилах: путь pages/add.json => PagesControllder->add, где первый параметр — имя контроллера, второй — действие. Так просто и так красиво*) Сам код класса-роутера, разбирающего путь в параметры — посмотрите самостоятельно
Контроллер и Модель
Контроллер — это кусочек, из параметров входных выполняющий нужные действия с базой (через абстракции моделей)
Модель — класс абстракции, который позволяет не думать о каждый раз в параметрах sql-запросов) В готовом коде он уже разбит на базовую модель и отнаследованную от нее модель страницы (можно же не только страницы так редактировать, а что угодно)))).
Собственно и таблица куда будет происходить запись
Классы-помощники (DB, F) я тоже описывать не буду — это мой любимый способ группировки внутри статичных классов (F) и единого объекта к базе (DB) для запросов в одну строку))).