Get値を渡すと、URLがマングルされます
-
25-10-2019 - |
質問
1.3から2.0.3にアップグレードしたばかりで、すべての変更を移行しようとしています。次の行に気づいています
echo $this->Html->link('Quote', array('controller'=>'crm_quotes', 'action'=>'index', $lead['id'].'/'.$crmContact['CrmContact']['id']), null);
URLを構築します "/crm_quotes/index/15/21"
. 。リンクをクリックすると、URLに移動します。
"/crm_quotes/index/15%2F212
したがって、文字をHTMLに置き換えています #
しかし、それは最終的にリンクを破っています。
URLを正しいものに手動で編集するとき:
"/crm_quotes/index/15/21"
ページが読み込まれます。
誰かが私に啓発することができますか?使用する必要があります url
リンクではなく機能?
URLで複数のパラメーターを渡す必要があるページがたくさんあります。名前付きパラメーターを使用していましたが、Mark Storyのコメントを読んだ後、将来のバージョンからの削除の可能性を示唆しているため、指名されたパラメーターを停止することにしました。
解決
余分なパラメーターを正しい(ケーキ)方法で渡します。ケーキは任意のエンコードです /
URLでは、具体的に設定されていません。私はまだこれを防ぐ方法を見つけていません。
echo $this->Html->link('Quote', array('controller'=>'crm_quotes',
'action'=>'index',
$lead['id'],
$crmContact['CrmContact']['id']), null);
他のヒント
あなたの問題に対する答えとして:連結された '/'を取り出して、その配列の個別の値としてIDを渡すだけです。それらの間に自動的に前方のスラッシュを配置する必要があります。
echo $this->Html->link('Quote', array(
'controller'=>'crm_quotes',
'action'=>'index',
$lead['id'],
$crmContact['CrmContact']['id']
));
エンコーディングのトピックについて:ここでの問題は、テキストではなくURLの有効な部分として扱われることを意図していることを知らないということだと思います。デフォルトの動作は、この問題を回避するために予備の文字をエンコードすることであるため、URLがエンコードされます。
これが次のとおりです 同様の質問, 、そして答え 一般的にURLエンコード.
所属していません StackOverflow