我在商店网站上有一张表格。这个想法是,当你点击“添加到购物车按钮”时,它会发送参数(4个中的3个已知,是用户输入的最后一个)。这里的问题是发送的URL不正确。
以下是一个产品表单的示例:
<div class='product'>
<article class="produto_box">
<h3>Salsa</h3>
<img src='https://gnomo.fe.up.pt/~ee10174/trabalhosSiem/trabalhoPHP2/images/ervas/salsa'.'.png'>
<br>
<span class="preco"><b>Preço: </b>1€</span>
<form method="GET" action="https://gnomo.fe.up.pt/~ee10174/trabalhosSiem/trabalhoPHP2/actions/produtos/add_to_cart.php?preco=1&qtd=qtd&id=4&nome=Salsa>
<input type="hidden" name="encomendar[4][preco]" value="1" />
Qtd (1-10): <input type="number" name="qtd" min="1" max="10"><br>
<input type="submit" name="encomendar[4]" value="Adicionar ao Carrinho">
</form>
</article>
</div>
生成者:
{foreach $produtos as $produto}
<div class='product'>
<article class="produto_box">
<h3>{$produto.nome}</h3>
<img src='{$BASE_URL}/images/{$produto.tipo}/{$produto.ref}'.'.png'>
<br>
<span class="preco"><b>Preço: </b>{$produto.preco}€</span>
{if $TIPO == 'cliente'}
<form method="GET" action="{$BASE_URL}/actions/produtos/add_to_cart.php?preco={$produto.preco}&qtd=qtd&id={$produto.id}&nome={$produto.nome}>
<input type="hidden" name="encomendar[{$produto.id}][preco]" value="{$produto.preco}" />
Qtd (1-10): <input type="number" name="qtd" min="1" max="10"><br>
<input type="submit" name="encomendar[{$produto.id}]" value="Adicionar ao Carrinho">
</form>
{/if}
</article>
</div>
{/foreach}
而不是所需的网址,我得到了这个传递:
(...)add_to_cart.php?qtd=3&encomendar%5B4%5D=Adicionar+ao+Carrinho
知道为什么会这样吗?
答案 0 :(得分:0)
您需要对URL进行编码,但如果您想接受任何输入,则应该使用POST而不是GET。使用GET会遇到很多编码问题。
答案 1 :(得分:0)
我不习惯使用smarty,所以你可能需要修改一下我的语法,但我认为这大概就是你所需要的:
{assign var="url" value="{$BASE_URL}/actions/produtos/add_to_cart.php?preco={$produto.preco}&qtd=qtd&id={$produto.id}&nome={$produto.nome}" }
<form method="GET" action="{$url|urlencode}">