Croogo: разные макеты для разных локаций

Как установить разную раскладку для разных локаций с помощью "Перевести плагин"

например:

  • со ссылкой: [http://example.com/eng] он должен отображать default.ctp для английского языка
  • и со ссылкой: [http://example.com/ja] он должен отображать default.ctp для японского

1 ответ

Один из способов сделать это, прочитав $this->request->params['locale'] переменная, которая доступна в файле Controller / AppController.php, а затем измените макет в соответствии с ним. Это было бы что-то вроде этого:

class AppController extends CroogoAppController {

    public function beforeRender() {

    // Some code...

        // First, checks if the locale parameter is not empty
        if(!empty($this->request->params['locale']))

            // Then, sets the layout for each case.
            // In this example, we user eng and ja
            switch($this->request->params['locale']) {
                case 'eng':
                    $this->layout = 'Croogo.eng';
                    break;
                case 'esp':
                    $this->layout = 'Croogo.ja';
                break;
            }

        // If it is empty, then loads the default locale layout
        else
            $this->layout = 'Croogo.default';
    }

    // The rest of the AppController code...
}

Обратите внимание, что я использовал префикс Croogo для файлов макетов. Я сделал это потому, что хотел, чтобы файлы макетов загружались из папки croogo. В моей установке они расположены по пути Vendor / croogo / croogo / Croogo / View / Layouts.

Надеюсь, поможет!

Другие вопросы по тегам