Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Ошибка Undefined variable, controller, header.php


Recommended Posts

Строка из журнала ошибок: 

PHP Notice:  Undefined variable: header in /var/www/vhosts/demo.com/httpdocs/catalog/controller/tmarket/header.php on line 108

Последняя строчка. Как победить проблему?

 

<?php
class ControllerTmarketHeader extends Controller
{
    public function index() {
        $this->load->language('common/header');

        if ($this->request->server['HTTPS']) {
            $server = $this->config->get('config_ssl');
        } else {
            $server = $this->config->get('config_url');
        }

        if (is_file(DIR_IMAGE . $this->config->get('config_logo'))) {
            $data['logo'] = $server . 'image/' . $this->config->get('config_logo');
        } else {
            $data['logo'] = '';
        }

        // Wishlist
        if ($this->customer->isLogged()) {
            $this->load->model('account/wishlist');

            $data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), $this->model_account_wishlist->getTotalWishlist());
        } else {
            $data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), (isset($this->session->data['wishlist']) ? count($this->session->data['wishlist']) : 0));
        }

        $data['text_logged'] = sprintf($this->language->get('text_logged'), $this->url->link('account/account', '', true), $this->customer->getFirstName(), $this->url->link('account/logout', '', true));

        $data['home'] = $this->url->link('common/home');
        $data['wishlist'] = $this->url->link('account/wishlist', '', true);
        $data['logged'] = $this->customer->isLogged();
        $data['account'] = $this->url->link('account/account', '', true);
        $data['register'] = $this->url->link('account/register', '', true);
        $data['login'] = $this->url->link('account/login', '', true);
        $data['order'] = $this->url->link('account/order', '', true);
        $data['transaction'] = $this->url->link('account/transaction', '', true);
        $data['download'] = $this->url->link('account/download', '', true);
        $data['logout'] = $this->url->link('account/logout', '', true);
        $data['shopping_cart'] = $this->url->link('checkout/cart');
        $data['checkout'] = $this->url->link('checkout/checkout', '', true);
        $data['contact'] = $this->url->link('information/contact');
        $data['telephone'] = $this->config->get('config_telephone');
        $data['compare'] = $this->url->link('product/compare');
        $data['language'] = $this->load->controller('common/language');
        $data['currency'] = $this->load->controller('common/currency');
        $data['search'] = $this->load->controller('common/search');
        $data['cart'] = $this->load->controller('common/cart');
        $data['menu'] = $this->load->controller('common/menu');

        $search_status = $this->config->get('module_ptsearch_status');
        if($search_status) {
            $data['search'] = $this->load->controller('extension/module/ptsearch');
            $data['search_status'] = true;
        } else {
            $data['search'] = $this->load->controller('common/search');
            $data['search_status'] = false;
        }

        $data['store_id'] = $this->config->get('config_store_id');
		// tmarket Module Postion
			$data['position1'] = $this->load->controller('common/position1');
			$data['position2'] = $this->load->controller('common/position2');
			$data['position3'] = $this->load->controller('common/position3');
			$data['position4'] = $this->load->controller('common/position4');
			$data['position5'] = $this->load->controller('common/position5');
			$data['position6'] = $this->load->controller('common/position6');
			$data['position7'] = $this->load->controller('common/position7');
			$data['position8'] = $this->load->controller('common/position8');
			$data['position9'] = $this->load->controller('common/position9');
			$data['position10'] = $this->load->controller('common/position10');
		// End tmarket Module Postion
        /* General */


        /* Catalog Mode */
        /* Header */
        if(isset($this->config->get('module_ptcontrolpanel_header_cart')[$data['store_id']])) {
            $data['header_cart'] = (int) $this->config->get('module_ptcontrolpanel_header_cart')[$data['store_id']];
        } else {
            $data['header_cart'] = 0;
        }

        if(isset($this->config->get('module_ptcontrolpanel_header_currency')[$data['store_id']])) {
            $data['header_currency'] = (int) $this->config->get('module_ptcontrolpanel_header_currency')[$data['store_id']];
        } else {
            $data['header_currency'] = 0;
        }

        if(isset($this->config->get('module_ptcontrolpanel_module_quickview')[$data['store_id']])) {
            $module_quick_view = (int) $this->config->get('module_ptcontrolpanel_module_quickview')[$data['store_id']];
        } else {
            $module_quick_view = 0;
        }

        if(isset($this->config->get('module_ptcontrolpanel_cate_quickview')[$data['store_id']])) {
            $category_quick_view = (int) $this->config->get('module_ptcontrolpanel_cate_quickview')[$data['store_id']];
        } else {
            $category_quick_view = 0;
        }

        if($module_quick_view || $category_quick_view) {
            $data['use_quick_view'] = true;
        } else {
            $data['use_quick_view'] = false;
        }

        return $this->load->view('tmarket/page_section/header/header' . $header, $data);
    }
}

 

Змінено користувачем DenPo
Надіслати
Поділитися на інших сайтах


1 час назад, DenPo сказал:

Последняя строчка. Как победить проблему?

До этой строчки определить переменную $header и передать в неё те данные которые нужно (очевидно окончание названия шаблона который вы хотите вызвать)

  • +1 1
Надіслати
Поділитися на інших сайтах

30 минут назад, iglin сказал:

До этой строчки определить переменную $header и передать в неё те данные которые нужно (очевидно окончание названия шаблона который вы хотите вызвать)

Короче мне этого не понять, я в коде не силен) Нужно писать разрабу шаблона

  • +1 1
Надіслати
Поділитися на інших сайтах


1 час назад, DenPo сказал:

Нужно писать разрабу шаблона

Если "tmarket" модуль из его шаблона то однозначно стоит попробовать)

Надіслати
Поділитися на інших сайтах

18 минут назад, mpn2005 сказал:

Просто замените

А вдруг там header.twig нету? Оно ведь очевидно что то дописать туда хотит)

Надіслати
Поділитися на інших сайтах

25 минут назад, iglin сказал:

А вдруг там header.twig нету? Оно ведь очевидно что то дописать туда хотит)

Может. Но наиболее вероятно, что это просто лишняя переменная.

Ну а так - да, можно посоветовать перед использованием добавить:

$header = rand();

Текущая ошибка так точно уйдёт. :)

 

 

Надіслати
Поділитися на інших сайтах

8 минут назад, mpn2005 сказал:

Текущая ошибка так точно уйдёт.

Куда ей уйти, если файла с таким шаблоном не будет? Вывалится в 500 ошибку, хоть ранд напишешь, хоть совсем удалишь переменную.

Надіслати
Поділитися на інших сайтах

2 минуты назад, iglin сказал:

Куда ей уйти, если файла с таким шаблоном не будет? Вывалится в 500 ошибку, хоть ранд напишешь, хоть совсем удалишь переменную.

Не понимаете вы шуток.

Неужели после правки вот эта ошибка сохранится?

Цитата

PHP Notice:  Undefined variable: header in /var/www/vhosts/demo.com/httpdocs/catalog/controller/tmarket/header.php on line 108

 

Конечно не сохранится.

Если переменная лишняя, то всё заработает. А если нет, то тут заочно никак не поможешь. Надо смотреть и шаблоны в том числе.

 

Надіслати
Поділитися на інших сайтах

1 минуту назад, mpn2005 сказал:

Неужели после правки вот эта ошибка сохранится?

Эта нет) Упадёт с пятисотой. Я сильно сомневаюсь что кто то бы в здравом уме ошибся с переменной, дописав её через конкатенацию. Стояла б там запятая, то да)

Надіслати
Поділитися на інших сайтах

6 минут назад, iglin сказал:

Эта нет) Упадёт с пятисотой. Я сильно сомневаюсь что кто то бы в здравом уме ошибся с переменной, дописав её через конкатенацию. Стояла б там запятая, то да)

Рассмотрим ситуацию сейчас:

1) Выдаёт ошибку, что переменной нет. Мы чётко по файлу видим, что её нет.

2) Нет переменной, значит выполнение идёт, и вместо переменной в строку попадает пустое место.

3) Изначально вопрос не стоит про ошибку 500 - и караул у нас всё пропало. Значит какой-то шаблон там есть.

Исходя из этого убирание переменной не ухудшает ситуацию уж точно. И если не было ошибки 500 с несуществующей переменной, то она и не появится.

С какой целью все эти заочные изыскания?

Надіслати
Поділитися на інших сайтах

3 минуты назад, mpn2005 сказал:

С какой целью все эти заочные изыскания?

Ну автор ведь хотел что то "этим сказать" ) А ТС и пошёл спрашивать у автора) И у нас нет информации, что у ТС "выполнение идёт, и вместо переменной в строку попадает пустое место", вполне может быть пустая страница. Мы ведь знаем только что  Undefined variable: в журнале ошибок.

Надіслати
Поділитися на інших сайтах

12 часов назад, DenPo сказал:

return $this->load->view('tmarket/page_section/header/header' . $header, $data);

как я понимаю, тут предусмотрено подключение кастомных хедеров. хедер-мама, хеде-папа и пр.  значит просто объявить переменную, типа

    private $header= '';

    public function index() {

но придется также изменить

 return $this->load->view('tmarket/page_section/header/header' . $header, $data);
    

 

на

 return $this->load->view('tmarket/page_section/header/header' . $this->header, $data);
    
Надіслати
Поділитися на інших сайтах

17 часов назад, mpn2005 сказал:

Просто замените это:




return $this->load->view('tmarket/page_section/header/header' . $header, $data);

На это:




return $this->load->view('tmarket/page_section/header/header', $data);

 

Спасибо, ошибка пропала.
Есть еще одна, правда она появилась до изменений... тоже последняя строчка.

 

PHP Warning:  unlink(/var/www/vhosts/demo.com/storage/cache/cache.catalog.language.1625743068): No such file or directory in /var/www/vhosts/demo.com/httpdocs/system/library/cache/file.php on line 68

 

<?php
namespace Cache;
class File {
	private $expire;

	public function __construct($expire = 3600) {
		$this->expire = $expire;

		$files = glob(DIR_CACHE . 'cache.*');

		if ($files) {
			foreach ($files as $file) {
				$time = substr(strrchr($file, '.'), 1);

				if ($time < time()) {
					if (file_exists($file)) {
						unlink($file);
					}
				}
			}
		}
	}

	public function get($key) {
		$files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');

		if ($files) {
			$handle = fopen($files[0], 'r');

			flock($handle, LOCK_SH);

			$data = fread($handle, filesize($files[0]));

			flock($handle, LOCK_UN);

			fclose($handle);

			return json_decode($data, true);
		}

		return false;
	}

	public function set($key, $value) {
		$this->delete($key);

		$file = DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.' . (time() + $this->expire);

		$handle = fopen($file, 'w');

		flock($handle, LOCK_EX);

		fwrite($handle, json_encode($value));

		fflush($handle);

		flock($handle, LOCK_UN);

		fclose($handle);
	}

	public function delete($key) {
		$files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');

		if ($files) {
			foreach ($files as $file) {
				if (file_exists($file)) {
					unlink($file);
				}
			}
		}
	}
}

 

Змінено користувачем DenPo
Надіслати
Поділитися на інших сайтах


В 08.07.2021 в 00:24, iglin сказал:

Эта нет) Упадёт с пятисотой. Я сильно сомневаюсь что кто то бы в здравом уме ошибся с переменной, дописав её через конкатенацию. Стояла б там запятая, то да)

 

Вы реально решили что те кто могут вот так ошибиться не в здравом уме??? вы видимо по себе судите

Надіслати
Поділитися на інших сайтах

9 часов назад, DenPo сказал:

Есть еще одна, правда она появилась до изменений... тоже последняя строчка.

 

PHP Warning:  unlink(/var/www/vhosts/demo.com/storage/cache/cache.catalog.language.1625743068): No such file or directory in /var/www/vhosts/demo.com/httpdocs/system/library/cache/file.php on line 68

 

вот решение https://github.com/opencart/opencart/blob/master/upload/system/library/cache/file.php

Надіслати
Поділитися на інших сайтах

14 минут назад, Venter сказал:

Спасибо. А как вы поняли что это действительно то что нужно? Вижу в том файле различия, но по какой причине они были сделаны? Или это массовая ошибка и сделали исправление?

Надіслати
Поділитися на інших сайтах


11 часов назад, Venter сказал:

Сайт не открылся, откатился обратно - Parse error: syntax error, unexpected 'int' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /var/www/vhosts/demo.bom/httpdocs/system/library/cache/file.php

Змінено користувачем DenPo
Надіслати
Поділитися на інших сайтах


В 09.07.2021 в 13:26, DenPo сказал:

Сайт не открылся, откатился обратно - Parse error: syntax error, unexpected 'int' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /var/www/vhosts/demo.bom/httpdocs/system/library/cache/file.php

 

если вы вообще не понимаете что делаете в файлах с кодом и просто копипастите то лучше специалиста нанять, иначе в итоге вы ушатаете свой сайт своим копипастом и незнанием

Надіслати
Поділитися на інших сайтах

44 минуты назад, Venter сказал:

 

если вы вообще не понимаете что делаете в файлах с кодом и просто копипастите то лучше специалиста нанять, иначе в итоге вы ушатаете свой сайт своим копипастом и незнанием

Все под контролем)) Бэкап и дело в шляпе. Специалиста желательно тогда, когда все ушатано :grin: 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.