вторник, 16 июля 2013 г.

Symfony2 и Tinymce

Возник вопрос, как не особо заморачиваясь, добавить редактор tinymce в symfony2 проект. Нужно это нам преемущественно для админки.
Немного погуглив, наткнулся на бандл https://github.com/stfalcon/TinymceBundle, разрабатывал бандл украинский разработчик. Но в бандле была не последняя версия tinymce, поэтому было принято решение, написать это самому через расширение формы.
Итак, что я сделал:

четверг, 28 февраля 2013 г.

Как убрать /app.php из URL на Symfony 2

После очередных танцев с бубном получилось убрать app.php
Помог http://stackoverflow.com/questions/869092/how-to-enable-mod-rewrite-for-apache-2-2

Если у Вас тоже не получается и mod_rewrite на сервере включен и Вы используете виртуальные хосты на сервере то обратите внимание на директиву AllowOverride All. 
Опция AllowOverride указывает Apache, какие директивы в файле .htaccess допустимы
Как только я добавил эту директиву у меня все заработало!
        
<VirtualHost *:80>
        ServerName sym.example.com
        DocumentRoot /var/www/html/Symfony/web/
        CustomLog logs/symfony.access.log combined
        ErrorLog logs/symfony.error.log
        AddType application/x-httpd-php php
        AddDefaultCharset UTF-8
   <Directory "/var/www/html/Symfony/web">
        DirectoryIndex app.php
        Order allow,deny
        Allow from all
        Options Indexes FollowSymLinks
        AllowOverride All
   </Directory>
</VirtualHost>

пятница, 15 февраля 2013 г.

SonataAdminBundle и загрузка файлов

Ну во-первых можете меня поздравить! Мне дали задачу реализовать прототип архива нашего сайта на Symfony2 + Doctrine 2. Ух, это вещь скажу я вам! Далеко вперед шагнула современная веб-разработка. Давно я не получал удовольствия от программирования! В сторону Битрикса уже не хочется смотреть совсем )
Итак понадобилась админка. CRUD генератор Доктрин классная вещь, но из него нужно еще делать админку. Пока решил установить популярный SonataAdminBundle. Это оказалось не так уж просто. Решил, что лучше поставить также Composer (менеджер зависимостей), чтобы он сам определял зависимости. Ну и тут не обошлось без танцев с бубном. Погуглил, посмотрел issues на gitHub и с трудом Sonata установилась со всеми нужными пакетами.
Вещь классная, но тут стал вопрос как загружать изображения в админке. Для этого вроде бы есть SonataMediaBundle, но пока хотелось бы просто обойтись загрузкой файла.
Опять танцы с бубном. Погуглил.
Создал свойство $file, в сущности Image и метод который делает следующее:
    public function setFile($file)
    {
        $this->file = $file;
        $fileName = uniqid() . '.' . $file->guessExtension();
        $file->move($this->getUploadRootDir(), $fileName);
        $this->path = $fileName;
        $this->file = null;
    }
А чтобы наша картинки отображалась в списке в админке, нужно добавить след. строки в административный класс который наследует класс Sonata\AdminBundle\Admin\Admin:
class ImageAdmin extends Admin
{
...
public function configureListFields(ListMapper $listMapper)
    {
        $listMapper->add('id')
                   ->add('shortDescription')
                   ->add('path', null, array(
                       'template' => 'YOURNamespaceYourBundle:Image:showImage.html.twig'
                       ))
                   ->add('seoCode')
                   ->add('yearOfPainting')
                   ->add('_action', 'actions', array(
                       'actions' => array(
                           'edit' => array(),
                       )
                   ));
    }
а в шаблоне что-то типа:
<td>
    <img src="{{ object.photo }}" style="height: 100px;" />
</td>

правда, для разных списков может понадобиться создавать разные шаблоны, а править код сонаты не хочется. Но чувствую на этом ньюансы не закончатся! Может все таки стоит попробоавть SonataMediaBundle. До встречи!

четверг, 17 января 2013 г.

Как копировать/загружать файлы через Putty?

Если, например, Вам захотелось быстро скопировать файлы с сервера через программу Putty можно воспользоваться утилитой, входящей в состав PuTTY PORTABLE которая называется pscp.exe заходим в директорию, где у Вас установлена Putty и набираем:

> pscp.exe -P 77777 -i pkey.ppk user@site.com:/var/file.log d:\

где
-P - порт сервера, если нестандартный
-i - персональный ключ аутентификации, если надо
user - имя пользователя

Если необходимо скопировать файл на сервер, то соответственно меняем местами расположения:
> pscp.exe -P 77777 -i pkey.ppk d:\file.log user@site.com:/var/ 

среда, 26 сентября 2012 г.

Как Вы используете оператор сравнения if?

Появился у меня вопрос, почему в стандартах оформления кода популярных фреймворков, например Zend и Symfony
оператор сравнения используют так:
if (5 == $var) {
//do something
}
я лично привык всегда сравнивать так:
if ($var == 5) {
//do something
}
Это как то удобнее и понятнее.
Но недавно открыл для интереса одну статью для начинающих PHP разработчиков на хабре и понял.
Оказывается лучше приучиться к первому способу оформления кода так как это может сэкономить массу времени при поисках ошибки.
Когда мы сравниваем так: if ($var == 5)- очень легко пропустить знак "=" и написать if ($var = 5)
тогда ошибку будет найти трудно.
Если же пропустим один знак "=" и напишем так:
if (5 = $var)
то интерпретатор выкинет ошибку и будет нам счастье )

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

понедельник, 17 сентября 2012 г.

Подсветка синтаксиса в blogger.com

Просто хочу проверить работу SyntaxHighlighter в блоге.
$igorNotes = new IgorNotes();

foreach ($igorNotes->getPosts() as $post) {
    echo $post->getMessage();
}

Ура, работает. Узнал как сделать тут

Здорова!

Тут, я наверное, если даст Бог, буду писать свои записочки о делах программерских. Вообще хочу писать о чем мне самому интересно. Надеюсь Вам будет интересно вместе со мной.
Вообще не знаю правильно ли я сделал, что создал блог у гугла, может стоило бы все таки пойти на livejournal? Но говорят он старый и мне кажется немного тормозной, хотя у меня там есть один блог, но совершенно не на программерскую тему onachenko-igor.livejournal.com.
Интересно на чем написан blogger.com?

p.s. Если я не смогу тут публиковать цветные листинги кода - я могу отсюда уйти )
p.s.2. друг подсказал, что решения для цветных листингов кода можно нагуглить