以下是我们如何在Cakephp模型关系中使用Translate行为。我正在努力提高这段代码的质量。
public function edit($id = null) {
if (!$this->Faq->exists($id)) {
throw new NotFoundException(__('Invalid faq'));
}
if ($this->request->is('post') || $this->request->is('put')) {
if ($this->Faq->saveMany($this->request->data)) {
$this->Session->setFlash('The faq has been saved', 'default', array('class' => 'success'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The faq could not be saved. Please, try again.'));
}
} else {
$options = array('conditions' => array('Faq.' . $this->Faq->primaryKey => $id));
$this->request->data = $this->Faq->find('first', $options);
}
$languages = $this->Language->getlangs();
if(is_array($this->{$this->modelClass}->belongsTo)) {
foreach($this->{$this->modelClass}->belongsTo as $relation => $model) {
foreach($languages as $lang){
$this->{$this->modelClass}->$model['className']->locale = $lang['Language']['language_locale'];
$faqCategories[$lang['Language']['language_locale']] = $this->Faq->FaqCategory->find('list', array('conditions' => array('FaqCategory.is_active' => 1), 'recursive' => 1));
}
}
}
$this->set(compact('faqCategories'));
}
它工作正常,但我希望有一个功能相同的质量代码。 提前谢谢。
答案 0 :(得分:0)
TranslateBehavior实际上非常容易设置,开箱即用,配置非常少。在本节中,您将学习如何添加和设置要在任何模型中使用的行为。
如果您在可包含的问题中使用TranslateBehavior,请务必为查询设置“字段”键。否则,最终可能会生成无效的SQL。
****初始化i18n数据库表****
./cake i18n
正确布局。
class Post extends AppModel {
public $actsAs = array(
'Translate'
);
}
阅读翻译内容
默认情况下, TranslateBehavior 会根据当前区域设置自动获取和添加数据。当前的语言环境是从L10n类分配的Configure :: read('Config.language')中读取的。您可以使用
动态覆盖此默认值$Model->locale