0

次のようなリンクがあったとしましょう。

<a href="<?php echo url_for('cart?item_id='.$cart->getItemId().'&a=b') ?>">Cart</a>

aページの URL に含まれないように、クエリ パラメータの代わりに POST 経由で送信されるように変更することは可能ですか? 同じデータが URL に表示されないだけですか?

4

2 に答える 2

1

を使用する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>

ちなみに、ドキュメントにあるように、これをフォーム内で使用しないでください..

于 2013-01-29T21:01:10.940 に答える
0

フォームを使用して、目的を達成する必要があります。このようなもの:

<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 固有のコードでこれを行う方法を示しています。

于 2013-01-29T19:48:29.633 に答える