Я пытаюсь получить переведенные данные в CakePHP, но у меня возникают некоторые проблемы.Cakephp Перевести недостающую таблицу
Моя модель подобна следующим.
class Newelement extends AppModel{
public $name = "Newelement";
public $actsAs = array(
'Translate' => array(
'title' => 'titleTranslation',
'subtitle' => 'subtitleTranslation',
'content' => 'contentTranslation'
)
);
// Use a different model (and table)
public $translateModel = 'NewElementTranslation';
// Use a different table for translateModel
public $translateTable = 'newelement_translations';
}
И моя модель для перевода заключается в следующем:
class NewelementTranslation extends AppModel {
public $displayField = 'field'; // important
}
Я могу сохранить данные с разных местах. Данные сохраняются в базе данных.
Но когда я пытаюсь получить данные с помощью «найти» метод ...
$newelements = $this->Newelement->find();
print_r($newelements);
Я получаю следующее сообщение об ошибке:
Missing Database Table
Error: Table new_element_translations for model titleTranslation was not found in datasource default.
Notice: If you want to customize this error message, create app/View/Errors/missing_table.ctp
Stack Trace
CORE/Cake/Model/Model.php line 3476 → Model->setSource(string)
CORE/Cake/Model/Datasource/DboSource.php line 1063 → Model->getDataSource()
CORE/Cake/Model/Model.php line 2880 → DboSource->read(Newelement, array)
CORE/Cake/Model/Model.php line 2852 → Model->_readDataSource(string, array)
APP/Controller/NewelementsController.php line 39 → Model->find()
[internal function] → NewelementsController->index()
CORE/Cake/Controller/Controller.php line 490 → ReflectionMethod->invokeArgs(NewelementsController, array)
CORE/Cake/Routing/Dispatcher.php line 187 → Controller->invokeAction(CakeRequest)
CORE/Cake/Routing/Dispatcher.php line 162 → Dispatcher->_invoke(NewelementsController, CakeRequest, CakeResponse)
APP/webroot/index.php line 110 → Dispatcher->dispatch(CakeRequest, CakeResponse)
Это не произойдет, если я использую базу данных по умолчанию i18n, используя этот код для моей модели и избегая использования переведенной модели.
class Newelement extends AppModel{
public $name = "Newelement";
public $actsAs = array(
'Translate' => array(
'title' => 'titleTranslation',
'subtitle' => 'subtitleTranslation',
'content' => 'contentTranslation'
)
);
}
Я хочу использовать translateModel и translateTable для поддержания базы данных легко, потому что это не будет единственной моделью, которую я хочу перевести.
Если кто-то может мне помочь, было бы здорово, потому что я застрял в этом.
Спасибо!
Я не уверен, но попробуйте придерживаться стандартов капитализации - ваша модель должна быть 'NewElement', а не' Newelement' ... и т. Д. – Dave
Спасибо! У меня была ошибка с одним из классов модели, как вы сказали. – peiblox