Symfony, Symfony2, PHP – прощайте

С пол года назад закончилось то время, когда я писал на PHP, использовал фреймворк Symfony, я страстно защищал свою привязанность к данным технологиям, видел в них собственное будущее и тп. Но, я перешел на написание кода на Ruby и фреймворк Ruby on Rails, теперь я понимаю, что PHP это полный отстой, в нем все очень долго приходится делать и все получается громоздким и медленным, возможно кто-то со мной не согласится, но это не мои проблемы, рельсы мне нравятся хотя иногда и встречается некая магия, которая больше походит на перловые вставки, но в целом все очень хорошо. Возможно кто-то станет говорить, что рельсы тяжелые и много требуют ресурсов, но я этого не замечаю, все работает быстро, не так как в симфони. Можно еще долго производить высер мыслей, но это мое прощание с PHP =)

Advertisements

Symfony 2: Controller

Использование форматов

В настоящее время веб-приложения представляют из себя большее, чем просто HTML странички. Начиная от XML для RSS фидов или веб-сервисов, и заканчивая JSON для Ajax запросов, они имеют множество различных форматов для выбора. Эти форматы полностью поддерживаются Symfony 2.

Read more of this post

symfony 2 разрешаем слешь на конце url

Решение 1: если поставить “/” на конце маршрута, например так
contact:

    pattern: /contact/
    defaults: { _controller: "WebsiteProjectBundle:Home:contact"}

то просиходить перенаправление с /contact на /contact/, и все работает. Но ест один большой минус: backslash в таком случае должен быть во всех маршрутах, что не удобно, если используются многие Пакеты сторонних разработчиков.

Решение 2: /web/.htaccess:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{HTTPS} =on
 RewriteRule ^(.+)/$ https://%{HTTP_HOST}/$1 [R=301,L]
 RewriteCond %{HTTPS} =off
 RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ app.php [QSA,L]
 #<IfModule mod_vhost_alias.c>
 # RewriteBase /
 #</IfModule>
</IfModule>

Решение 3: How to allow a “/” character in a route parameter

решения 1 и 2 скопированы с хабра

symfony 2 логин в контроллере

получаем пользователя

$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserById($id);

теперь залогинем его:

$providerKey = $this->container->getParameter('fos_user.firewall_name');
$token = new UsernamePasswordToken($user, null, $providerKey, $user->getRoles());
$this->container->get('security.context')->setToken($token);

Doctrine 2, UTF8

Открываем код. Находим файл doctrine-dbal/lib/Doctrine/DBAL/Schema/Schema.php

ищем строку “new Table“. Она там одна, код выглядит как-то так:

<?php
/**
     * Create a new table
     * 
     * @param  string $tableName
     * @return Table
     */
    publicfunction createTable($tableName)
    {
        $table=new Table($tableName);
        $this->_addTable($table);
        return$table;
    }
?>

Добавляем в конструктор объекта Table параметры:

array(),array(),array(),0,array('charset'=>'utf8','collate'=>'utf8_general_ci')

Получится что-то типа такого:

<?php
/**
     * Create a new table
     * 
     * @param  string $tableName
     * @return Table
     */
    publicfunction createTable($tableName)
    {
        $table=new Table($tableName,array(),array(),array(),0,array('charset'=>'utf8','collate'=>'utf8_general_ci'));
        $this->_addTable($table);
        return$table;
    }
?>

скопировано с: http://png-tech.blogspot.com/2011/09/utf8-doctrine-2.html

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

Symfony 2.0

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

Read more of this post