Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Ошибка 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);
    }
}

 

Edited by DenPo
Link to comment
Share on other sites


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

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

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

  • +1 1
Link to comment
Share on other sites

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

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

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

  • +1 1
Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

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

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

$header = rand();

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

 

 

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

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

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

Циии

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

 

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

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

 

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

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

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

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

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

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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);
    
Link to comment
Share on other sites

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);
				}
			}
		}
	}
}

 

Edited by DenPo
Link to comment
Share on other sites


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

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

 

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites


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

Edited by DenPo
Link to comment
Share on other sites


В 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

 

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

Link to comment
Share on other sites

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

 

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

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

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.