2014-01-20 149 views
1

以下是我们如何使用cakephp模型关系翻译行为。我正在努力提高这段代码的质量。Cakephp翻译行为

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

TranslateBehavior实际上非常容易安装,并且只需很少的配置即可使用。在本节中,您将学习如何添加和设置要在任何模型中使用的行为。

如果您在使用TranslateBehavior时遇到可疑问题,请务必为您的查询设置“字段”键。否则,您最终可能会生成无效的SQL。

****初始化i18n的数据库表****

./cake i18n 

对于正确的布局。

class Post extends AppModel { 
    public $actsAs = array(
     'Translate' 
    ); 
} 

阅读翻译内容

默认情况下,TranslateBehavior会自动获取,并添加基于当前区域的数据。当前语言环境从L10n类指定的Configure :: read('Config.language')中读取。您可以使用

$Model->locale