@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";
  • Вопрос задан
  • 90 просмотров
Решения вопроса 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 некоторое значение, предварительно не определив ее.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 16:26
3000 руб./за проект
03 мая 2024, в 16:09
1200 руб./за проект
03 мая 2024, в 16:06
3000 руб./за проект