проблема symfony с embedI18n - PullRequest
       0

проблема symfony с embedI18n

0 голосов
/ 05 ноября 2010

Я действительно застрял с этим.Я должен создать динамическую мультиязычную форму и сделать это следующим образом:

class TreeForm extends BaseTreeForm
{
    public function configure()
    {
        parent::configure();
        [...]
        $languages = sfConfig::get('app_language_list');
        $supportedlangs = $this->getObject()->getSupLangs();
        if (empty($supportedlangs))
        {
            $supportedlangs = $languages;
        }

        $this->embedI18n($supportedlangs);

        foreach ($supportedlangs as $lang)
        {
            $this->widgetSchema->setLabel($lang, $i18n->__($lang));
        }
var_dump(array_keys($this->getEmbeddedForms()));
    }
}

class treeActions extends autoTreeActions
{
    public function executeEdit(sfWebRequest $request)
    {
        $this->tree = $this->getRoute()->getObject();
echo "action::edit->before getform():<br/>\n";
        $this->form = $this->configuration->getForm($this->tree);
echo "action::edit->after getform():<br/>\n";
var_dump(array_keys($this->form->getEmbeddedForms()));
    }
}

Я думал, что это должно сработать, но вывод выглядит так:

action :: edit-> перед getform ():
массив
0 => строка 'seuzo_szolg_addresses' (длина = 21)
1 => строка 'hu' (длина = 2)
2 => строка 'en'(длина = 2)

action :: edit-> после getform ():
массив
0 => строка 'seuzo_szolg_addresses' (длина = 21)

Что за хреньмои встроенные формы i18n исчезают сразу после инициализации основной формы?Любая помощь очень ценится.

1 Ответ

0 голосов
/ 23 ноября 2010

Я до сих пор не знаю, почему это не работает, но нашел обходной путь:

вместо

$this->form = $this->configuration->getForm($this->tree); 

Я использовал

$this->form = new TreeForm($this->tree);

ЭтоТаким образом, встроенные формы находятся на своем месте.Надеюсь уделить время кому-нибудь.

...