Многоязычные формы
В новой версии symfony 1.1 значительно упростили работы с многоязычными формами (интернационализация - i18n). В этом посте вы научитесь как создавать такие формы.
Итак возьмем простую многоязыную пропел схему:
propel:
article:
id: ~
author: varchar(255)
created_at: ~
article_i18n:
title: { varchar(255), required: true }
content: longvarchar
После того как база сконфигурирована, выболняем команду propel:build-all для генерация пропел модели и классов для работы с формами:
$ php symfony propel:build-all
Вот такой спиской файлов автоматически создасться в папке проекта:
lib/
form/
ArticleForm.class.php
ArticleI18nForm.class.php
BaseFormPropel.class.php
model/
Article.php
ArticlePeer.php
ArticleI18n.php
ArticleI18nPeer.php
Мы хотим одновременно обновлять обе версии нашей статьи Английскую и Французкую в одной форме:
Если вы пробовали сделать подобное в symfony 1.0, вы уже знаете, что это долгая и местами утомительная задача.
Благодаря улучшенияв в symfony 1.1, это задача выполняется в течении 2х минут.
Первое, добавим языки которые хотим использоваться в ArticleForm class:
class ArticleForm extends BaseArticleForm
{
public function configure()
{
$this->embedI18n(array('en', 'fr'));
$this->widgetSchema->setLabel('en', 'English');
$this->widgetSchema->setLabel('fr', 'French');
}
}
И второе, генерируем CRUD модуль для того чтоб наш web интерфейс мог показывать список статей (list), создавать их (create), обновлять (update), и удалять (delete):
$ php symfony generate:crud frontend article Article
Наслаждаемся полность рабочим модулем /frontend_dev.php/article.
Раздел Symfony



July 12th, 2008 at 2:16 pm
У меня ен получилось, как только добавил $this->embedI18n(array(’en’, ‘fr’));
пропел начал выдавть ошибку
“No connection params set for propel”
не могу разобраться в чем дело. Страно когда убераю embedI18n, все работает…
July 12th, 2008 at 2:41 pm
можешь выложить пример кода, который получается в результате?
July 13th, 2008 at 12:17 am
Код выложу чуть позже.
Теперь по ошибке “No connection params set for propel”
Это ошибка выдается в нескольких случаях:
1. У тебя в settings.yml (приложения) не добавлен хелпер I18N
2. Проверь разметку в файле databases.yml
3. В databases.yml проверь, что указан полный путь к таблице mysqli://root@localhost/ИМЯ_ТАБЛИЦЫ
Вопросы можешь задавать в русскоязычном форуме поддержки симфони http://www.symfony.org.ua