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

Recommended Posts

Доброго времени суток! Имеется OpenCart 2.3, сейчас настраиваю вывод договора с заполненными данными пользователя, но они все никак не хотят отображаться в tpl

Контроллер:

$this->load->model('account/signup');
		$vendor_data = $this->model_account_signup->getVendorDataUI();
		foreach ($vendor_data AS $result) {
			$data['vendor_data'][] = array (
				'username'			=> $result['username'],
				'firstname'			=> $result['firstname'],
				'middle_name'		=> $result['middle_name'],
				'lastname'			=> $result['lastname'],
				'date_added'		=> $result['date_added']
				);
			$username = $result['username'];
			$firstname = $result['firstname'];
			$middle_name = $result['middle_name'];
			$lastname = $result['lastname'];
			$date_added = $result['date_added'];
		}

		$data['username'] = $username;
		$data['date_added'] = $date_added;
		$data['firstname'] = $firstname;
		$data['middle_name'] = $middle_name;
		$data['lastname'] = $lastname;
		
		
		$this->load->language('account/dogovor');
		$data['text_head'] = $this->language->get('text_head');
		$data['text_first'] = sprintf($this->language->get('text_first'), $lastname, $firstname, $middle_name);
		$data['text_city'] = $this->language->get('text_city');
		$data['text_date'] = $this->language->get('text_date');
		$data['text_head'] = $this->language->get('text_head');
		$data['text_predmet'] = $this->language->get('text_predmet');
		$data['text_second'] = $this->language->get('text_second');
		$data['text_oplata'] = $this->language->get('text_oplata');
		$data['text_third'] = $this->language->get('text_third');
		$data['text_poryadok'] = $this->language->get('text_poryadok');
		$data['text_fourth'] = $this->language->get('text_fourth');
		$data['text_otvet'] = $this->language->get('text_otvet');
		$data['text_fifth'] = $this->language->get('text_fifth');
		$data['text_fors'] = $this->language->get('text_fors');
		$data['text_sixth'] = $this->language->get('text_sixth');
		$data['text_osob'] = $this->language->get('text_osob');
		$data['text_seventh'] = $this->language->get('text_seventh');
		$data['text_rekv'] = $this->language->get('text_rekv');
		$data['text_eighth'] = $this->language->get('text_eighth');
		$data['text_seller'] = $this->language->get('text_seller');
		$data['text_nickname'] = $this->language->get('text_nickname');
		
		$this->response->setOutput($this->load->view('common/success', $data));

Модель:

public function getVendorDataUI() {
		$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "user` WHERE username = '" . (int)$this->request->get['username'] . "'");		
		return $query->row;
	}

Вызов контролера происходит по ссылке вида:

https://tu***.ru/index.php?route=account/signupsuccess&username=avrora

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


1) Не стоит доставать get параметры в модели. Достаньте параметр в контроллере и передайте как параметр функции в модель.

2) $this->request->get['username'] - У вас точно число? Вы его в модели приводите к (int).

Если это строка, то лучше делать так:

	public function getVendorDataUI($username) {
		$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "user` WHERE username LIKE '" . $this->db->escape($username) . "'");		
		return $query->row;
	}

А в контроллере вызывать так:

$vendor_data = $this->model_account_signup->getVendorDataUI($this->request->get['username']);

 

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

		if (isset($this->request->get['username'])) {
			$user = $this->request->get['username'];
		}

		$this->load->model('account/signup');
		
		$data['vendor_data'] =  array();
		
		$results = $this->model_account_signup->getVendorDataUI($user);
		
		foreach ($results as $result) {
			$data['vendor_data'][] = array (
				'username'			=> $result['username'],
				'firstname'			=> $result['firstname'],
				'middle_name'		=> $result['middle_name'],
				'lastname'			=> $result['lastname'],
				'date_added'		=> $result['date_added']
			);
		}

 

public function getVendorDataUI($user) {
		$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "user` WHERE username = '" . $this->db->escape($user) . "'");

 

В tpl будет вам $vendor_data

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

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

DB_PREFIX . "user` WHERE username = '" . $user . "'");

$this->db->escape
Надіслати
Поділитися на інших сайтах

16 минут назад, ArtemPitov сказал:

$this->db->escape

Ну да, но не int точно :) Хотя, может у него в базе имена числовые :)

UPD: Исправил в предыдущем посте.

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

5 минут назад, ibond сказал:

 


public function getVendorDataUI($user) {
		$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "user` WHERE username = '" . $user . "'");

 

В tpl будет вам $vendor_data

Курс по внедрению уязвимостей в код? :)

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

7 минут назад, ibond сказал:

if (isset($this->request->get['username'])) { $user = $this->request->get['username']; }

$this->load->model('account/signup');

$data['vendor_data'] = array();

$results = $this->model_account_signup->getVendorDataUI($user);

Ну и еще, тут логика не совсем правильная, если обратится без гета будет ошибка 

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

Давайте готовый модуль уже напишем. Подсказали, же. А дальше сама, сама, сама...

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

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

1) Не стоит доставать get параметры в модели. Достаньте параметр в контроллере и передайте как параметр функции в модель.

2) $this->request->get['username'] - У вас точно число? Вы его в модели приводите к (int).

Если это строка, то лучше делать так:


	public function getVendorDataUI($username) {
		$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "user` WHERE username LIKE '" . $this->db->escape($username) . "'");		
		return $query->row;
	}

А в контроллере вызывать так:


$vendor_data = $this->model_account_signup->getVendorDataUI($this->request->get['username']);

 

Спасибо за помощь, стало лучше (если можно так сказать) :D вместо переменных в тпл посыпались нули, а так же полный журнал ошибок в магазине :(

2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'username' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 71
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'firstname' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 72
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'middle_name' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 73
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'lastname' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 74
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'date_added' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 75
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'username' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 77
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'firstname' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 78
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'middle_name' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 79
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'lastname' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 80
2017-01-19 0:34:10 - PHP Warning:  Illegal string offset 'date_added' in /home/e/e91239iy/e91239iy.bget.ru/public_html/catalog/controller/account/signupsuccess.php on line 81

а вот с int затупил реально))) изначально хотел по id делать

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


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

print_r($vendor_data) -- массив

 

Array ( [user_id] => 46 [user_group_id] => 50 [username] => avrorahostel [password] => 96e79218965eb72c92a549dd5a330112 [salt] => [firstname] => Юлия [middle_name] => ggggg [lastname] => Месропян [email] => [email protected] [image] => [code] => [ip] => [status] => 5 [date_added] => 2017-01-19 01:20:24 [cat_permission] => [store_permission] => [vendor_permission] => 46 [folder] => [user_date_start] => 0000-00-00 [user_date_end] => 0000-00-00 )
Змінено користувачем grechanyuk
Надіслати
Поділитися на інших сайтах


8 часов назад, grechanyuk сказал:

заработало :))) спасибо))

В модели:

return $query->row;

Замените на:

return $query->rows;

Это если их там несколько.

Если один, то цикл в контроллере не нужен, как писал ArtemPitov.

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

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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