Pull to refresh

Comments 74

Ваша статья офигительна.

Но — можно оффтопик? У меня создалось такое количество блогов, написанных в результате изучения фрэймворков, что я не успеваю в них ничего писать.

Что с этим делать? Можно ли оформить их как плагины к Symfony? ;)
Hello, World — это не модно. Сейчас пишут Hello, Blog!

В плагины, конечно, можно оформить :)
Будет время на выходных — напишу статью «создание графического редактора на Django».
А про поиск для новой ветки написать можете?
ахахаххахаха )))))))) тонкий юмор над пхп-шниками)
а в чем собственно юмор?
UFO landed and left these words here
Супер! Сам как раз сейчас изучаю фреймворк, пишу на нем один проектик. Столкнулся с тем, что очень тяжело начать. надеюсь с помощью вашей следующей статьи получится все быстрее и лучше) То, что описано в этой я уже успел осилить самостоятельно)
Можете на пальцах объяснить, почему? Возможно, я сделал неправильный выбор в пользу Propel
По слухам Doctrine самый продвинутый ORM на PHP. ИМХО: немного пользовался и тем и другим, доктрина круче. )
Работал с обеими фреймворками. Основное впечатление: Doctrine гораздо лучше, более логичен и функционален. Вот только блин, чего сильно не хватает, так это аналога sfPropelAlternativeSchema для Doctrine
Тег «symfony 1.2», а у Вас 1.1.4 в примере…
Вы наблюдательны! Скриншоты сделаны с симфонии 1.1.4, а урок взят из документации к 1.2. Хочется сказать, Мопед не мой, но наверное, скриншоты для следующего урока буду делать со своего браузера. Спасибо
Symfony — очень хороший и продуманный Фрэймворк с большой буквы. Уже 9 месяцев вместе и он с каждым днём всё лучше и лучше!

Тем кто ещё не определился на чём работать — очень советую обратить взляд.
Под какими нагрузками работает?
Тоже интересен этот вопрос.
UFO landed and left these words here
как и php. Вобщем-то всё решает кэширование и балансировка нагрузки.
Разработчикам встроенного механизма кэширования в sf нужно аплодировать стоя! ;)
Как обстоят дела с производительностью на виртуальном хостинге, не в курсе?
нормально, под рбк хостится, конечно после очистки кэша первый реквест выполняется долго (вплоть иногда до таймаута) а дальше нормально
Виртуальный хостинг не айс. Даже не потому, что symfony на нём плохо работает ( это я не утверждаю ) — просто для лучшей производительности нужна ещё куча софта, которым на таких хостах обычно и не пахнет — nginx, APC, например.
UFO landed and left these words here
Определенно стоит перевести и 2ю часть; )
Замечательная альтернатива Rails ;) Но код… после рельсов мягко говоря отпугивает… Здесь, наверное, тоже на MVC обычно раскидывают — иначе не разобраться в коде. И теперь я наконец-то понимаю, почему в Rails так восхищаются REST
Да, стоит заметить, конечно, что с PHP я практически не связывался
не спорю, что ruby более приятен чем php. Но если откинуть в сторону различия в синтаксисе языков, то оба фреймворка имеют много общего.
Тоже не спорю — уверен, что профессиональным PHP-программистам проще и удобнее использовать symfony. Хотя… Руби совсем несложен, зато потом сколько радости ;)

Одним из крупных преимуществ symfony считаю отсутствие проблем с shared хостингом. В рунете с RoR тяжело…
Правда симфони-разработчики об этом не знают и пишут, что фреймворк их не расчитан на shared хостинг)))
Кстати при написании symfony очень много взято и ruby, prada, и др фремворков, попытались сделать сборную солянку и взять наиболее интересные реализации.
Думаю что неплохо получилось.
Фреймворки, конечно — хорошо, но гораздо интереснее писать код самому!
Это увлекательно и интересно!
после 2-3 раза писать одно и то же становится необычайно влом. ТОгда или пишут свой фреймворк, или берут существующий
Возможно, но все равно — весь кайф в программировании заключается в создании собственного кода.
Это как родить ребенка, лучше когда он свой, а не чужой :)
Так интереснее жить!

А с тотальным распространением фреймворком мы катимся к тому, что через пару лет не будет программистов, а будет какая-нить софтинка для какого нить менеджера. Он в ней ставит тока галочки (импортировать блог, каталог, укажите требуемое кол-во полей и т.п.). И все прога сама сгенерит и подключит нужное…

Эх, а где романтика, где эти короткие темные ночи
Софтинка сама собой появится? ;)
Ее напишет 1 программист,
тем самым «убив» много миллионов программистов.
Убив? Что вы под этим понимаете?
Ну вот смотрите,
что дает symphony?
Он дает предопределенную логику и инструменты, он выполняет низкоуровневые операции…
Сейчас программист определеяет набор данных, называет методы, выполняет команды по сборке проекта, всякие управляющие команды (symfony propel:build-model).

По сути — все это можно реализовать в грамотно построенном интерфейсе и тогда создавать проекты смогут не технические специалисты — менеджеры например. А что там, указал в програмульке название проекта, понаставил галок — мол включить такие то модули, такие наборы полей, нажал кнопочку сгенерить и вуаля сайтец…

Таким образом, отпадает необходимость в высоко квалифицированнх программистах.
вам что занятся нечем? У меня есть НАСТОЛЬКО большое количество идей сделать то чего ЕЩЁ НЕТ, что о том чтобы не пользоваться существующими веб-фреймворками даже и речи-то нет +).
Каждый раз писать, к примеру, функции санитизации GET/POST/данных для вставки в БД и пр.?
Да вы, батенька, затейник :)
у нас был один такой проект.
помню, создание любой новой сущности в БД начиналось с копипастанья около пяти объемных файлов.
написано это было настолько замечательно, что рефакторить было бессмысленно.
Согласен, но со временем все равно появляются какие-то куски кода, которыми начинаешь пользоваться постоянно, модернизируя по ходу… А это уже ни что иное, как свой, маленький фреймворк :)

С фреймворками разработка продвигается намного быстрее, ИМХО.
А каким образом тебе в этом мешает фрэймворк?
>>Фреймворки, конечно — хорошо, но гораздо интереснее писать код самому!
>>Это увлекательно и интересно!

Ух ты — мне поставили -2.
Это значит, что тут куча идиотов, а не программистов
Не надо, не надо — мне +3 поставили — здесь все хорошие :))
аффтар, напиши про реализацию ACL в symphony, лично мне оно может вскоре пригодиться:)
UFO landed and left these words here
UFO landed and left these words here
Спасибо большое за перевод! Давно хотел начать изучать Симфони, да все руки никак не доходили. Думаю, это послужит стартом ;) Слыхал много положительных отзывов о Симфони, и как ни странно, не слышал ни одного негативного. Хотя нет, слышал пару негативных отзывов по поводу того, что нет хорошей документации на русском, но это не относится непосредственно к самому фреймворку. :)

С нетерпением буду ждать следующих переводов :)

З.Ы. Английский знаю на среднем уровне, и не всегда все понимаю дословно, только в общих чертах :(
Думаю будет полезно не просто переводить пост, а добавлять в него русской специфики:
— все надписи — на русском,
— кодировку можно тоже использовать например cp1251, чтобы по-полной черпнуть локальной специфики.
Так же, при работе с формами стоит обратить внимание на маркировку с помощью * обязательных полей. На то, чтобы slug формирвоать с помощью транслитерации, ну и так дале…

А кроме блогов на этих фреймфорках можно чтото написать?
Все, что угодно :) Как? Умом и руками :)
как-то мне довелось работать с одним проектом на symfony. необходимо было добавить несколько полей к существующей формочке и я поправил файл, описывающий модель, но затем исполнять команду «php symfony propel:build-model» побоялся, т.к. мне нужно было всего лишь обновить структуру базы и я не знал что с ней произойдёт если исполнить эту команду, как она отработает, что будет с данными?

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

то есть я задаю один вопрос: как обновить структуру базы после изменения описания модели?
UFO landed and left these words here
Вау, хорошо написана.
Да, стоит переводить.
Все не было времени познакомиться с симфони.
а теперь вы дали отличный толчек для старта :)
Очень нравится Symfony, но сильно раздражают его стандарты кодирования и YAML (XML использовать религия не позволяет).
YAML гораздо быстрее чем XML. Учитывая общую тормознутость PHP, в котором даже нормального ООП-то не попишешь по причине тормознутости, и кэшировать приходится каждый чих — YAML это настоящая находка.
Точно так же как для аякса лучше использовать JSON.
XML рулит в других местах, типа Жавы, ящитаю.
Всё это верно, но в Симфонии YAML ИМХО используется только при подготовке проекта
А куда потом пропадают database.yml, view.yml, app.yml и settings.yml и остальные .yml файлы?
Никуда, на их основе строится модель
Мммм, нет :)
Модель строится на основе schema.yml (кстати можно и schema.xml), а перечисленные мной файлы никуда не пропадают.
Вот я чайник в симфонии. Стал всё делать по статье и на шаге, где добавление коммента делается по ссылке из поста получаю sfError404Exception Object blog_comment does not exist (). :( Не подскажете, в чём может быть дело? В симфонии 1.2? :)
Ошибка не потому, что вы чайник в Симфонии, а потому что в оригинальной статье целых 3 ошибки в одном месте. Когда мы привязываем комментарий к посту, мы сначала выводим ссылку

<?php echo link_to('Add a comment', 'comment/edit?post_id='.$blog_post->getId()) ?>

Тут мы видим первые две ошибки:
1. поскольку мы Добавляем, а не Редактируем комментарий, надо вместо edit написать new.
2. Параметр ID поста должен быть не post_id, а blog_post_id

Ну и третья ошибка — это собственно создание hidden-поля со значением, взятым из $_GET['blog_post_id'], которое мы передаем по упомянутой ссылке. Я еще не вполне знаком с культурой Симфонии, и не могу точно сказать, что предложенное решение верное, но я сделал так: в файле apps/frontend/modules/comments/actions/action.class.php в экшене executeNew я добавил следующую строку:

    $this->form->bind(array("blog_post_id"=>$request->getParameter('blog_post_id')));    

которая добавляет в форму одно поле, взяв значение из $_REQUEST['blog_post_id'].

Теперь вопрос к знатокам Симфонии: как это сделать правильно?

P.S. Получается, вы — единственный, из прочитавших пост, кто сделал этот туториал?..
Просто давно собирался разобраться с симфонией, да всё руки не доходили.
Я, в общем-то, так и предполагал, что там ошибка, но как её исправить не докумекал.
Обязательно попробую ваше решение, спасибо.
Вот еще один вариант решения:
В методе executeNew() модуля comment пишем вместо

$this->form = new BlogCommentForm();

следующее:

    $comment=new BlogComment();
    $comment->setBlogPostId($request->getParameter('blog_post_id'));
    $this->form = new BlogCommentForm($comment);


(спасибо bitingm@n за подсказку).
Only those users with full accounts are able to leave comments. Log in, please.