1

私は CakePHP でページを作成しています。URL を翻訳しようとしています。私が望むのは、コントローラー名を翻訳することです。このURLを持っているとしましょう。domain/da/productそれをデンマーク語に翻訳する必要があるので、domain/da/produkt.

AppHelper で独自の url メソッドを作成しましたが、翻訳のためにモデルにアクセスする際に問題があります。ヘルパーからモデルへのアクセスを検索すると、人々はそのようにすることに反対します。

では、これを行う適切な方法は何でしょうか。ユーザーがリンクを使用するとき、私はそれを元に戻すルックアップを作成する必要がありますdomain/da/product

これがApphelperコードです

App::uses('Helper', 'View');
App::import("Model", "ControllerTranslation");

class AppHelper extends Helper {

public function url($url = null, $full = false) {

      $Model = new ControllerTranslation();           
      $lang = Configure::read('Config.language');
      $controller = $Model->find("first",array("conditions"=> array("ControllerTranslation.translation = "=> $url['controller'],"ControllerTranslation.language" => $lang)));
      if (count($controller))
      {
            $url['controller'] = $controller["ControllerTranslation"]["translation"];
      }        
    return parent::url($url, $full);
}   
4

1 に答える 1

0

translation = $url['controller'] および language = $lang の URL が必要な場合は、次の構文を使用する必要があります。

$controller = $Model->find("first",
  array("conditions"=>   
    array(
           "ControllerTranslation.translation" => $url['controller'],                 
           "ControllerTranslation.language" => $lang
         )
       )
  );
于 2013-03-29T12:48:22.417 に答える