Выдержки и памятки из различных статей. Мои собственные заметки.
- app/: Конфигурация приложения
- src/: PHP код проекта
- vendor/: Сторонние зависимости
- web/: Корневая директория web-сервера
Создание бандла
Я работаю в режиме девелопера, так что корректируйте пути к файлам конфига.
Пусть это будет бандл для работы с блогами.
-
В файл app/config/AppKernel.php добавил свой бандл
$bundles[] = new Blog\BlogBundle\BlogBundle();
куда добавлять - сразу поймёте, там всё просто.
-
В файл app/config/routing_dev.yml добавил следующий код:
blog:
resource: "@BlogBundle/Resources/config/routing.yml"
Теперь указан путь к роутингу моего бандла.
-
Создаем сам бандл.
В папке src создаем папку Blog. В ней BlogBundle и в ней файл BlogBundle.php , а также папки Controller и Resources
src -> Blog -> Controller
Resources
BlogBundle.php
-
В BlogBundle.php помещаем такой код:
namespace Blog\BlogBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class BlogBundle extends Bundle
{
}
Теперь у нас своё пространство имён, специально для бандла Blog.
-
В папке Controller создаем файл BlogController.php со следующим содержимым:
namespace Blog\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class BlogController extends Controller{
public function indexAction(){
return new Response('Main blog page');
}
public function oneBlogAction($id = 0) {
return new Response('blog number ' . $id);
}
}
Теперь есть главный класс, в котором есть функция, отвечающая за вывод главной страницы блогов.
-
Определяем роутинг нашего бандла. Для этого в файле src/Blog/BlogBundle/Resources/config/routing.yml пишем так:
blog:
pattern: /blog
defaults: { _controller: BlogBundle:Blog:index }
one_blog:
pattern: /blog/{id}
defaults: { _controller: BlogBundle:Blog:oneBlog }
Таким образом фреймворк знает, что у нас есть виртуальный путь /blog , для обработки которого нужно использовать контроллер Blog из бандла Blog. И главной функцией класса Blog будет функция index.
И также есть URL вида blog/ , по которому мы сможем достучаться до конкретного блога, передав его айдишник.
Имейте ввиду, что я опускаю такие слова как Bundle,Controller и Action в именах классов и функций.
Таким образом мы настроили простейший роутинг и создали заготовку бандла. Теперь в неё осталось поместить файлы с темизацией, подключить к БД и добавить возможность создавать, редактировать и удалять блоги.
И у дальнейший обвес по желанию.