2014-01-20 3 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이 생성 될 수 있습니다.

**** 정확한 레이아웃을 위해 ****

./cake i18n 

국제화 (i18n) 데이터베이스 테이블을 초기화.

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

독서는 TranslateBehavior가 자동으로 취득 해, 현재 로케일에 따라 데이터를 추가합니다 기본적으로 내용

을 번역했다. 현재 로케일은 L10n 클래스에 의해 할당 된 Configure :: read ('Config.language')에서 읽혀집니다.

$Model->locale 
을 사용하여이 기본값을 무시할 수 있습니다.