Обновить
2.52

Symfony *

Свободный фреймворк, написанный на PHP5

Сначала показывать
Порог рейтинга
Уровень сложности

Редактирование древовидных структур с SonataAdminBundle в Symfony2

Время на прочтение9 мин
Количество просмотров14K
Редактирование древовидных структур — довольно частая задача в веб-разработке. Это очень удобно пользователю, поскольку дает ему возможность создавать любые иерархии у себя на сайте. Естественно, что после перехода на Symfony2, одной из первых задач стало создание такого иерархического списка страниц и написание админки к нему. А так как в качестве админки я использую SonataAdminBundle, то задача сводилась к настройке его для редактирования деревьев.
Читать дальше →

Symfony 2: Полезные библиотеки и бандлы

Время на прочтение9 мин
Количество просмотров54K
Уже около полугода для разработки веб-проектов используем Symfony 2. Накопился список полезных библиотек и бандлов, не входящих в состав symfony-standard, но значительно экономящих время и избавляющих от изобретения велосипеда.



Обзор больше теоретический и включает следующие разделы:
  • Админгенераторы
  • Пользователи
  • Импорт/экспорт xls
  • API и OAuth 2.0
  • Меню/навигация
  • Мультимедиа
  • Формы
  • Поиск
  • Пагинация
  • Файловая система
  • HTTP клиент

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

Читать дальше →

Интеграция CKEditor в SonataAdminBundle

Время на прочтение2 мин
Количество просмотров6.6K
Собственно говоря, встраивается этот WYSIWYG редактор “легким движением руки”. Необходимо лишь загрузить его javascript код на страницу админки и добавить класс “ckeditor” к необходимому textarea полю. Но есть и один нехороший подводный камень, о котором я и написал в посте.

Читать дальше →

Использование ShtumiUsefulBundle в Symfony2 — несколько полезных вещей в одном бандле

Время на прочтение7 мин
Количество просмотров3.2K
Разрабатывая проекты на базе нового, но уже ставшего очень популярным фреймворка Symfony2 невольно сталкиваешься с кусками кода, которые с минимальными изменениями, а то и вовсе без них кочуют из одного проекта в другой. Собрав несколько таких «кусков» воедино я создал ShtumiUsefulBundle, об использовании которого хочу рассказать.
Читать дальше →

Создаем собственный фреймворк на основе Symfony2. (Часть 6)

Время на прочтение4 мин
Количество просмотров4.8K
В шестой части серии, мы научимся использовать компонент HttpKernel.


Читать дальше →

Создаем собственный фреймворк на основе Symfony2. (Часть 5)

Время на прочтение4 мин
Количество просмотров4.2K
В пятой части серии мы поговорим о контроллерах.

Читать дальше →

Административный интерфейс с SonataAdminBundle

Время на прочтение10 мин
Количество просмотров50K
В базовой поставке Symfony 2 предусмотрен только минимальный функционал создания CRUD интерфейса. Для реализации административного интерфейса разработан ряд бандлов, в частности SonataAdminBundle.
Читать дальше →

Создаем собственный фреймворк на основе Symfony2. (Часть 4)

Время на прочтение5 мин
Количество просмотров6.5K


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

<?php
 
// example.com/web/front.php
 
require_once __DIR__.'/../src/autoload.php';
 
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
 
$request = Request::createFromGlobals();
 
$map = array(
    '/hello' => 'hello',
    '/bye'   => 'bye',
);
 
$path = $request->getPathInfo();
if (isset($map[$path])) {
    ob_start();
    extract($request->query->all(), EXTR_SKIP);
    include sprintf(__DIR__.'/../src/pages/%s.php', $map[$path]);
    $response = new Response(ob_get_clean());
} else {
    $response = new Response('Not Found', 404);
}
 
$response->send();

Читать дальше →

Создаем собственный фреймворк на основе Symfony2. (Часть 3)

Время на прочтение4 мин
Количество просмотров4.3K

Оглавление





До сих пор наше приложение было довольно простым, поскольку содержало только одну страницу.
Что бы немного все усложнить, добавим другую страницу, говорящую «goodbye»:
    <?php

    // framework/bye.php

    require_once __DIR__.'/autoload.php';

    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;

    $request = Request::createFromGlobals();

    $response = new Response('Goodbye!');
    $response->send();

Как видите, большая часть кода точно такая же как и для первой страницы.
Давайте отдельно выделим общий код для всех наших страниц.
«Выделение общего кода», звучит как отличный план для нашего первого «настоящего» фреймворка!
Читать дальше →

Создаем собственный фреймворк на основе Symfony2. (Часть 2)

Время на прочтение6 мин
Количество просмотров7.6K
Оглавление

Часть 1
Часть 2
Часть 3
Часть 4
Часть 5

Прежде чем мы углубимся в рефакторинг кода, я сначала хочу сделать шаг назад и взглянуть на то, почему вы хотели бы использовать фреймворк вместо того, чтобы писать ваше приложение на чистом PHP. Почему использовать фреймворк на самом деле хорошая идея, даже для простейшего фрагмента кода, и почему создание собственного фреймворка на основе компонентов Symfony2 лучше, чем создавать фреймворк с нуля.
  • Я не буду говорить об очевидных преимуществах использования фреймворков при работе с большими приложениями и с более чем несколькими разработчиками; в сети уже множество хороших ресурсов по этой теме.

Читать дальше →

Создаем собственный фреймворк на основе Symfony2. (Часть 1)

Время на прочтение4 мин
Количество просмотров19K
Оглавление


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

Вместо того что бы использовать низкоуровневые компоненты, вы можете использовать полномасштабный фреймворк который базируется на этих компонентах — Symfony2… Или, вы можете написать свой собственный. Эта серия статей о последнем.

Зачем вам нужен собственный фреймворк? (Why would you like to create your own framework?)



Во-первых, почему вы хотите создать собственный фреймворк? Ведь, если посмотреть, все вам скажут, что не стоит изобретать велосипед, а использовать уже готовое решение. И в большинстве случаев они будут правы, но есть несколько причин что бы начать разработку своего фреймворка:

  1. Что бы изучить низкоуровневую архитектуру современных веб-ориентированных фреймворков, в частности Symfony2 и ее компонентов.
  2. Что бы создать фремворк «под ключ» для ваших специфических нужд. (Только прежде убедитесь, что ваши нужды действительно специфические)
  3. Для эксперимента ради удовольствия ( научился и забил )
  4. Для рефакторинга уже существующих приложений, которые нуждаются в более современных и устоявшихся практических решениях.
  5. Что бы доказать что вы это можете (… пусть и с небольшой помощью)

Читать дальше →

Объединенные формы и значения по умолчанию

Время на прочтение2 мин
Количество просмотров2.1K
Здравствуйте.

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

В Symfony 2, есть отличные инструменты по созданию форм из сущностей, а так же, что более интересно — объединенные формы.

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

Sluggable, Timestampable и так далее в Symfony 2

Время на прочтение2 мин
Количество просмотров12K
В второй Symfony, мы можем присоеденить бихейверы (behaviours) к нашим моделям используя расширения от Doctrine. Один пакет (bundle), StofDoctrineExtensionsBundle, даёт возможность использовать следующие бихейверы: Sluggable, Translatable, Timestampable, Loggable и Tree.

Вышеописанные расширения позволяет превратить обычные ссылки в удобочитаемые (sluggable), осуществлять простую поддержку интернационализации (translatable), организовывать контроль версий (loggable), создавать и автоматически заполнять дату создания и обновления сущности (timestampable), и организовывать древовидную структуру хранения данных (tree).
Читать дальше →

Ближайшие события

Нестандартная аутентификация в проектах на Symfony 2.0

Время на прочтение17 мин
Количество просмотров17K
Цель данной статьи — рассказать об организации нестандартной аутентификации для проектов на базе Symfony 2.0.

Зачем это может понадобится?


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

Кастомные аннотации в Symfony 2

Время на прочтение3 мин
Количество просмотров12K
Symfony2 — это веб-фреймворк, который появился совсем недавно. Соответственно, разработчики просто не успели написать к нему стоящую документацию. В одном из текущих проектов используется MongoDB, и ACL прикрутить нему можно, нужно всего лишь написать свой ACL-провайдер. Но я решил пойти своим путём. Итак, вот что примерно у нас получится:
class DefaultController extends Controller
{

    /**
    * Dashboard page.
    * @Permissions(perm="dashboard_view")
    * @Route("/", name="ITEDashboardBundle_index")
    * @Template()
    * @return array
    */
    public function indexAction()
    {.......

Читать дальше →

Symfony2. Подводные камни кэширования

Время на прочтение3 мин
Количество просмотров9.4K

Прошло уже 3 месяца с тех пор, как я, в качестве хобби, начал писать проект на новом Symfony 2. Далее в статье я постараюсь поделиться с хабрасообществом проблемами, с которыми может столкнуться разработчик. Статья ориентирована на людей уже знакомых с архитектурой Symfony и Doctrine.
Читать дальше →

Symfony2\SecurityBundle

Время на прочтение14 мин
Количество просмотров41K
Аутентификация и Авторизация Автор рассказывает об устройстве бандла Security (на мой взгляд, самого трудного в понимании для symfony-новичков) и разбирает пример его применения. Статья будет особенно полезна для тех, кто желает знать, как работает их инструмент: Symfony2 Security в общем и FOSUserBundle в частности — однако не подходит для первого знакомства с фреймворком, поскольку требует знания некоторых из его компонент.
Статья была опубликована 21 марта 2011 года, когда ещё не вышла финальная версия symfony2.0, однако принципы работы бандла не изменились.

Оригинальная статья — «Symfony2 Blog Application Tutorial Part V: Intro to Security» — часть цикла обучающих статей на примере создания блога.
Есть прямое продолжение/дополнение статьи — «Symfony2 Blog Application Tutorial Part V-2: Testing Secure Pages», где даётся пример тестирования «закрытых» частей приложения.


Читать дальше →

Конференция Symfony Camp UA 2011

Время на прочтение1 мин
Количество просмотров1.4K
Конференция Symfony Camp UA 2011

Конференция Symfony Camp UA 2011 посвящена разработке web-приложений с использованием PHP Framework Symfony. Основная тема конференции — это новая версия фреймворка Symfony 2. Это третья по счету конференция, которая состоится 29 октября 2011 года в Киеве.

Для участия необходимо пройти регистрацию. Конференция Бесплатная!


Программа конференции еще формируется. Все желающие выступить с докладом на Symfony Camp UA могут подать заявку на сайте 2011.symfonycamp.org.ua.

Читать дальше →

Создание CRUD приложения на Symfony 2, часть 2

Время на прочтение6 мин
Количество просмотров8.2K
Продолжение вводной статьи по Symfony 2. В первой части было описан процесс модификации формы редактирования записей, во второй части будем модифицировать интерфейс списка записей. В заготовке шаблона и контроллера списка записей, которую генерирует команда doctrine:generate:crud как минимум не хватает формы поиска записей и постраничной навигации.
Читать дальше →

Создание CRUD приложения на Symfony 2

Время на прочтение10 мин
Количество просмотров43K

Symfony 2.0


Недавно вышедшая версия фреймворка Symfony 2 включает в себя много интересных фич. В данной статье хочу рассказать про создание CRUD приложений — очень часто встречающейся задачи создания веб-интерфейса для создания, чтения, обновления и удаления записей в БД.
Далее