Как мне сделать функцию RemoveFromCart? - PullRequest
0 голосов
/ 28 мая 2020

У меня возникла проблема, из-за которой я не могу удалить свои товары из корзины. Всякий раз, когда я пытаюсь это сделать, возникает ошибка с именем «Требуется идентификатор параметра POST».

Напротив, он на удивление работает с добавлением товаров в корзину. Это сценарий, который я использую для отображения товаров в корзине и удаления:

<div class="container">
            <?php
                foreach(Cart::GetRooms() as $room) {
                    ?> 
                    <div>
                        <div class="media">
                            <img class="align-self-start mr-3" src="<?=$room->GetData()["icon_url"]?>" alt="Room icon" width="200px">
                            <div class="media-body">
                                <h5 class="mb-0"><?=$room->GetData()["title"]?></h5>

                                <div class="clearfix">
                                    <p>Cena: <span class="text-success font-weight-bold"><?=$room->GetData()["price"]?> <?=SHOP_CURRENCY?></span></p>

                                    <form method="post" action="/api/cart/removeItem.php">
                                        <input type="hidden" name="room_id" value="<?=$room->GetData()["id"]?>" />
                                        <button class="btn btn-primary" type="submit">X</button>
                                    </form>
                                </div>
                            </div>
                        </div>
                    </div>
                    <?php
                }
            ?>

Это сценарий, который должен удалять товары из корзины

<?php
require_once "../../settings.php";

$id = POST("id", true);

Cart::RemoveFromCart((int) $id);

http_response_code(302);
header("Location: /cart.php");
 public static function RemoveFromCart(int $id) : bool {
        $db = MysqliDb::getInstance();
        $db->where("id", $id);
        $db->delete("cart");
        return true;
    }

и это функция POST, которую я написал сам на случай, если она понадобится

function POST(string $key, bool $required=false, bool $secure=true) {
    if(!isset($_POST[$key])) {
        if($required) {
            exit("POST parameter $key is required");
        } 
        else {

        }
    }

    $return_val = $_POST[$key];

    if($secure) {
        $return_val = htmlentities($return_val);
    }

    return $return_val;
}

1 Ответ

0 голосов
/ 28 мая 2020

в вашей форме у вас есть

<input type="hidden" name="room_id" value="<?=$room->GetData()["id"]?>" />

, но в вашем скрипте вы ищете свойство id внутри запроса, поэтому вы должны изменить его на это

 <input type="hidden" name="id" value="<?=$room->GetData()["id"]?>" />

или так:

$id = POST("room_id", true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...