2

CakePHP 2.2を使用して、ビューに次のリンクを生成したいと思います。

<a href="/teams/edit/${$data.Team.id}">Edit</a>

このマークアップは、後でJavascriptテンプレートエンジンによって取得されるため、この${$data.Team.id}部分が使用されます。

これは私の明らかな最初の試みでした:

echo $this->Html->link(
    'Edit',
    array('controller' => 'teams', 'action'=>'edit', '${$data.Team.id}')
);

結果:

<a href="/teams/edit/%24%7B%24data.Team.id%7D">Edit</a>

$、、、はURLエンコードされていますが{}これは望ましくありません。

OK、でもオプションがあります、とTheBook'escape' => falseは言います。

echo $this->Html->link(
    'Edit',
    array('controller' => 'teams', 'action'=>'edit', '${$data.Team.id}'),
    array('escape' => false)
);

結果は変わりません。どうやら、パラメータは、URL配列'escape'のキーにある実際のクエリ文字列の処理にのみ影響します。'?'

HtmlHelperを使用して目的の結果を達成するにはどうすればよいですか?

4

2 に答える 2

1

あなたが望むものを達成する方法はありません。ルーターは、すべての名前付きパラメーターと渡されたパラメーターをurlencodeします。を使用HtmlHelper::url()してパーツを生成してから、/teams/edit/単純な文字列連結を使用できます。

編集:おそらくカスタムRouteClassを使用して、エンコードを行うCakeRoute :: _ writeUrl()メソッドを上書きすることができます。url配列に特別なパラメータを渡して、エンコードしないように指示し、そのパラメータの設定を解除します。

于 2013-02-13T14:33:53.237 に答える
0

リンクヘルパーを使用せずに、このために独自のヘルパーを作成することになりました。ヘルパーでは、URLヘルパーを使用してベースURLを生成してから、必要なパラメーターを追加しました。

于 2013-03-24T03:39:27.743 に答える