Buna ziua! Ma poate ajuta cineva cu o functie in Smarty?
Am un foreach cu “Produse din comanda:” si unul cu “Produse din cos:”
<p>Produse din comanda:</p>
{foreach $order->products as $product}
<p>{$product->quantity}x{$product->sku}</p>
{/foreach}
<p>Produse din cos:</p>
{foreach $order_products as $product}
<p>{$product['quantity']}x{$product['sku']}</p>
{/foreach}
Cum as putea adauga un text cu diferenta de produse?
Daca in “Produse din cos:” am mai putine produse ca in "Produse din comanda:
Sa imi spuna ce produse trebuie sa adaug si cantitatea : “Mai ai de adaugat 2xSKU”
Sau daca am unul in plus in “Produse din cos:” sa fiu avertizat ca e in plus
Eu aș muta logica asta[1] în afara Smarty. Faci operațiunea asta în php, în template doar afișezi.
Aș face așa:
// aduni întâi sku din cart
$inCart = array_map($order_products, fn($prod) => $prod['sku']);
foreach (...){
if( in_array( $product->sku, $inCart) ) {
// produsul e în coș
}
}
Probabil că se poate să faci direct din smarty, dar asta nu înseamnă și că ar trebui să fie smarty.
și orice altceva nu este loop sau if/else. Condițiile ar trebui să fie și ele cât mai dumb. if( $foo ) e ok, if( $foo == $bar && $bar == 'baz') nu mai e ok. ↩︎