次のようなリンクがあったとしましょう。
<a href="<?php echo url_for('cart?item_id='.$cart->getItemId().'&a=b') ?>">Cart</a>
a
ページの URL に含まれないように、クエリ パラメータの代わりに POST 経由で送信されるように変更することは可能ですか? 同じデータが URL に表示されないだけですか?
次のようなリンクがあったとしましょう。
<a href="<?php echo url_for('cart?item_id='.$cart->getItemId().'&a=b') ?>">Cart</a>
a
ページの URL に含まれないように、クエリ パラメータの代わりに POST 経由で送信されるように変更することは可能ですか? 同じデータが URL に表示されないだけですか?
を使用するurl_for
と、それは不可能です。POST をリンクとしてエミュレートするにlink_to
は、オプションを使用して指定する必要があります。post => true
- 'post' - true に設定すると、リンクは GET の代わりに POST リクエストを送信します (注意: フォーム内では使用しないでください)
それ以外の:
<a href="<?php echo url_for('cart?item_id='.$cart->getItemId().'&a=b') ?>">Cart</a>
あなたは書くべきです:
<?php echo link_to(
'Cart',
'cart?item_id='.$cart->getItemId().'&a=b',
array('post' => true)
) ?>
これは、非常に醜いものを生成しますが、GET の代わりに POST リクエストを送信します。
<a onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'post'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_csrf_token'); m.setAttribute('value', 'd9dbcba8c82084819006af93fbf8f961'); f.appendChild(m);f.submit();return false;" href="/cart/item_id/21/a/b">Cart</a>
ちなみに、ドキュメントにあるように、これをフォーム内で使用しないでください..
フォームを使用して、目的を達成する必要があります。このようなもの:
<form id="form1" method="POST" action="cart?item_id=ITEM_ID">
<input type="hidden" name="a" value="b" />
<a href="#" onclick="document.getElementById('form1').submit();">Cart</a>
<button type="submit">Cart</button>
</form>
要素を使用する場合<a>
は、フォームを送信するために Javascript が必要です。ただし、要素を使用することもできます。これは、CSSbutton
とまったく同じようにスタイルを設定できます。<a>
両方のオプションがコード例に示されています。
編集: あなたの質問が Symfony に関連しているという事実を完全に見逃していましたが、この方法はまだ適用される可能性があります。しかし、j0k の回答は、Symfony 固有のコードでこれを行う方法を示しています。