注意:使用 与 相比没有技术优势,但作为程序员我发现它使用 action=='add_to_cart' 比 action=='Add to Cart' 更酷.此外,我讨厌将演示与逻辑混为一谈.如果有一天您认为按钮显示添加"更有意义,或者如果您想使用不同的语言,那么您可以自由选择,而不必担心后端代码.
I'm creating a page with the products sold in the website. I'd like to include an "add to cart" button near each product, which are listed with markup similar to this:
<h4 class="productHeading">Product Name 1</h4>
<div>
Extra information on the product 1.
</div>
<h4 class="productHeading">Product Name 2</h4>
<div>
Extra information on the product 2.
</div>
...
Since the submit inputs will have different names (with the code of the product included), the big question is: should I wrap the entire product list in a form, or should I create one form for each product? In code:
<form method="post" action="process.php">
<h4 class="productHeading">Product Name 1</h4>
<div>
Extra information on the product 1.
<input type="submit" name="submit1" value="Add to Cart">
</div>
<h4 class="productHeading">Product Name 2</h4>
<div>
Extra information on the product 2.
<input type="submit" name="submit2" value="Add to Cart">
</div>
</form>
Or…
<h4 class="productHeading">Product Name 1</h4>
<div>
Extra information on the product 1.
<form method="post" action="process.php">
<input type="submit" name="submit1" value="Add to Cart">
</form>
</div>
<h4 class="productHeading">Product Name 2</h4>
<div>
Extra information on the product 2.
<form method="post" action="process.php">
<input type="submit" name="submit2" value="Add to Cart">
</form>
</div>
Which one is best practice? Any serious reason not to use one or the other, or am I doing it completely wrong?
解决方案
Best practice: one form per product is definitely the way to go.
Benefits:
It will save you the hassle of having to parse the data to figure out which product was clicked
It will reduce the size of data being posted
In your specific situation
If you only ever intend to have one form element, in this case a submit button, one form for all should work just fine.
My recommendation
Do one form per product, and change your markup to something like:
This will give you a much cleaner and usable POST. No parsing. And it will allow you to add more parameters in the future (size, color, quantity, etc).
Note: There's no technical benefit to using <button> vs. <input>, but as a programmer I find it cooler to work with action=='add_to_cart' than action=='Add to Cart'. Besides, I hate mixing presentation with logic. If one day you decide that it makes more sense for the button to say "Add" or if you want to use different languages, you could do so freely without having to worry about your back-end code.