Интернет разработки: PHP, Symfony, C#, ASP.NET, Linux, Windows. При поддержке компании HotSupport.Ru
6
Фев
Symfony Forms I18n изменение поведения
Posted by Jeka under Программирование
Появилась задача унифицировать поведение всех форм, конкретней, чтобы в многоязычной форме автоматически устанавливалась текущая культура пользователя. Для красоты еще добавил иконку флага как идентификатор культуры.
Все формы у нас наследуются от BaseFormPropel, следовательно открываем файл в нашем проекте $project/lib/form/BaseFormPropel.class.php и в методе класса setup(), пишем нужный нам код.
abstract class BaseFormPropel extends sfFormPropel
{
public function setup()
{
if ($this->isI18n())
{
$culture = sfContext::getInstance()->getUser()->getCulture();
$this->embedI18n(array($culture));
$icons = sfConfig::get('app_site_language_icons'); // get icon array
$this->widgetSchema->setLabel($culture, '<img src="'.$icons[$culture].'" width="24" height="24" alt="" />');
}
}
}
В файле app.yml у меня хранятся соответствия названий культур и иконок флажков.
all:
site:
language_icons:
ru: /images/flags/24/ru.png
en: /images/flags/24/en.png
de: /images/flags/24/de.png
В итоге получаем вот такой вид формы:

