2016-03-05 9 views
1

Извините за мой английский, но я надеюсь, что вы меня поймете. упрощенный код выглядит следующим образом:Cakephp 3 не работает для языка по умолчанию

// в bootstrap.php

ini_set ('intl.default_locale', 'ДЭУ');

// MainMenusTable.php

общественная функция инициализации (массив $ конфигурации) { родительская :: инициализировать ($ конфигурации); ...

$this->addBehavior('Translate', ['fields' => ['title']]); 

... }

// в контроллере - ЭТО РАБОТАЕТ!

public function add() 
{ 

    I18n::locale('eng'); 
    $mainMenu = $this->MainMenus->newEntity(); 
    if ($this->request->is('post')) {  
     $mainMenu = $this->MainMenus->patchEntity($mainMenu, $this->request->data); 
     $this->MainMenus->save($mainMenu) 
    } 
    $this->set(compact('mainMenu')); 
} 

// в контроллере НО ЭТО does't РАБОТА:

public function add() 
{ 

    I18n::locale('deu'); 
    $mainMenu = $this->MainMenus->newEntity(); 
    if ($this->request->is('post')) {  
     $mainMenu = $this->MainMenus->patchEntity($mainMenu, $this->request->data); 
     $this->MainMenus->save($mainMenu) 
    } 
    $this->set(compact('mainMenu')); 
} 

У меня такая же проблема, когда я прочитал запись

// в контроллер - ЭТО РАБОТЫ!

I18n::locale('eng');  
    $query = $this->MainMenus->find('all')->order(['MainMenus.id' => 'ASC'])->all(); 

// в контроллере НО ЭТО does't РАБОТА:

I18n::locale('deu');  
    $query = $this->MainMenus->find('all')->order(['MainMenus.id' => 'ASC'])->all(); 

Для 'ДЭУ' I введенных вручную записей. Знаете ли вы, в чем проблема? Спасибо!

ответ

1

Это решение проблемы (с другого форума): Поведение предполагает, что вы сохраняете записи на языке по умолчанию. Если текущий язык совпадает с языком по умолчанию, он просто вернет записи в базу данных, а не извлекает из таблицы переводов. Заголовок не будет сохранен в таблице i18n для языка по умолчанию, который выполняется только для других языков.