0

私のデフォルトのレイアウトでは、現在のページを指すリンクを表示したいと思いますが、接頭辞は異なります。www.site.com/eng/controller/action/param のようなアドレスを使用するために、プレフィックス「言語」を使用しています。

私は試した$this->Html->link('eng', array('language' => 'eng') );

eng/controller/actionただし、これにより、渡された引数なし、名前付き引数なし、および url パラメータなしの urlを含むリンクが作成されます。

どうすればこれを行うことができますか?1行のコードのようなエレガントなソリューションを好むでしょう-それができることは知っていますが、見つけることができません:(。

4

4 に答える 4

1

私の場合、この簡単な解決策もうまくいきました!

<?php
App::uses('HtmlHelper', 'View/Helper');
class MyHtmlHelper extends HtmlHelper {
    public function url($url = null, $full = false) {
        if(!isset($url['language']) && isset($this->params['language']) && is_array($url)) {
          $url['language']= $this->params['language'];
        }
        if(count($url) == 1 && isset($url['language'])){
            $params = $this->params;
            $url = array_merge($params['pass'],$url);
        }
        return parent::url($url, $full);
   }
}

そしてAppControllerで

public $helpers = array(
    ...
    'Html' => array('className' => 'MyHtml')
    ...
);
于 2014-06-30T10:19:11.330 に答える
0

$this->Html->link('eng', array('language' => 'eng', 'pass') );

于 2012-05-28T12:02:37.543 に答える
0

このようなものが動作するはずです:

$url = Router::parse($this->here);
$url['language'='end';
$this->Html->link('eng', $url);

1行ではありませんが、1行に圧縮できますが、かなり読みにくくなります。

ただし、1行の呼び出しになるヘルパー/関数でラップできます;-)

于 2012-05-28T15:00:48.293 に答える