@Humon91072
neznayka17

Почему переменная определяется как неизвестная?

Доброго времени суток!
Связывал телеграм бот с магазином, задача бота оповещать о новых заказах. Столкнулся с проблемой, неизвестная переменная.
public function actionCheckout()
    {
        if (empty($_SESSION['cart'])) {
            return $this->redirect(['site/error']);
        }
        $model = new Orders();
        if ($model->load(Yii::$app->request->post())) {
            $model->total_sum = $_SESSION['cart.sum'];
            if ($model->validate() && $model->save()) {
                $token = "1824070568:AAGZbzn4rlXr17YJWQkGWuWgJjyEXTE9gVU";
                $chat_id = "-548130760";
                $arr = array('<b><a href="https://asp-polimer.uz/admin/orders/view?id=' . $model->order_id . '"> Новый заказ #' . $model->order_id . '</a></b>' => '', '‍♂️ Имя:' => $model->costumer_name, '☎️ Телефон: ' => $model->costumer_phone, ' Дата: ' => date('d.m.Y в H:i'), ' Сумма: ' => number_format($model->total_sum, 2, '.', ' ') . ' сум',);
                foreach ($_SESSION['cart'] as $item) {
                    $ar[' Товар: '][] = $item['name'] . '  ' . $item['qty'] . ' шт * ' . number_format(ceil($item['price']), 0, '.', ' ') . ' ₸';
                    $order_items = new OrdersItems();
                    $order_items->order_id = $model->order_id;
                    $order_items->product_id = $item['product_id'];
                    $order_items->product_code = $item['product_code'];
                    $order_items->product = $item['name'];
                    $order_items->qty = $item['qty'];
                    $order_items->price = $item['price'];
                    $order_items->total_sum = $item['price'] * $item['qty'];
                    $order_items->save();
                }
                foreach ($arr as $key => $value) {
                    $txt .= "<b>" . $key . "</b> " . $value . "\n";
                };
                foreach ($ar as $key => $value) {
                    if (is_array($value)) {
                        foreach ($value as $tovs) {
                            $txt .= "<b>" . $key . "</b> " . $tovs . "\n";
                        }
                    }
                };
                $txt = rawurlencode($txt);
                $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}", "r");
                $session = Yii::$app->session;
                $session->open();
                $session->remove('cart');
                $session->remove('cart.qty');
                $session->remove('cart.sum');
                return $this->redirect(['cart/order-success']);
            } else {
                Yii::$app->session->setFlash('error', "Ошибка! Что-то пошло не так...");
            }
        }
        return $this->render('checkout', ['model' => $model]);
    }


Ошибка:
PHP Notice – yii\base\ErrorException
Undefined variable: txt

$txt .= "" . $key . " " . $value . "\n";
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Разложите запись, и будет ясно:

$txt = $txt /* вот в этом месте $txt используется, но еще не существует */
     . "<b>" . $key . "</b> " . $value . "\n";


$txt = ''; // нужно сначала инициализировать
foreach ($arr as $key => $value) {
  $txt .= "<b>" . $key . "</b> " . $value . "\n";
};
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sl0
А что непонятного в ошибке?
Пытаетесь приконкатенировать к $txt некоторое значение, предварительно не определив ее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы