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

[Решено] Warning: sprintf(): Too few arguments in


PREDATORik

Recommended Posts

поставил немецкий перевод. в конце заказа пишет такое вот:

Warning: sprintf(): Too few arguments in /var/www/vh16897/data/www/dikker.org.ua/catalog/controller/checkout/success.php on line 55

как решить проблему? спасибо.

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


  • 9 months later...

Здравствуйте! У меня такая же проблема, но к сожалению ответ для меня не понятен, я конечно пробовал через яндекс узнавать что такое форматная строка, аргументы и спецификаторы, но там не очень приминимо к опенкарт объясняют, а можно поподробней уточнить как ее решить? Спасибо, буду ждать ответа!

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


Здравствуйте! У меня такая же проблема, но к сожалению ответ для меня не понятен, я конечно пробовал через яндекс узнавать что такое форматная строка, аргументы и спецификаторы, но там не очень приминимо к опенкарт объясняют, а можно поподробней уточнить как ее решить? Спасибо, буду ждать ответа!

Думаю по ссылке на русском достаточно подробно написано.

http://php.net/manual/ru/function.sprintf.php

А кратко, первым аргументом идет как бы обычная строка но с неизвестными (говоря по простому) которые помечены знаком процента (%). Вот сколько этих процентов в первой строке (первом аргументе), столько должно быть запятых после первой строки и после запятой значение, соответствующее букве после процента.

$format '%d обезьян сидят на %s';

printf($format$num$location);

В строке два процента, поэтому после подставленной строки в первом аргументе идут две запятые, после которых переменные соответствующего формата. d - это должно быть число, s - строка, по простому слово или слова.

Вместо процентов с буквами подставляются значения этих двух последующих аргументов. Если будет третья запятая и значение после него (либо просто запятая вызовет ошибку много аргументов. Если будет только одна запятая с одним аргументом, то вызовет ту ошибку, которая написана вначале. Т.е. слишком мало аргументов для заданной строки. Две неизвестные, но одно значение для подстановки.

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


  • 3 weeks later...

поставил немецкий перевод. в конце заказа пишет такое вот:

Warning: sprintf(): Too few arguments in /var/www/vh16897/data/www/dikker.org.ua/catalog/controller/checkout/success.php on line 55

как решить проблему? спасибо.

 

Скорее всего проблема в файле catalog\language\russian\checkout\success.php. Ошибка в немецком тексте.

 

Попробуйте убрать из текста переменные с %. Но учтите, что в тексте на странице будет выводиться стандартный текст без динамических данных.

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


  • 2 months later...

Та же ошибка.
Выдается после завершения оформления заказа.
Warning: sprintf() [function.sprintf]: Too few arguments in /home/имя_базы/мой-сайт.ru/www/catalog/controller/checkout/success.php on line 58

Фрагмент кода:
if ($this->customer->isLogged()) {
$this->data['text_message'] = sprintf($this->language->get('text_customer'),
$this->url->link('account/account', '', 'SSL'),
$this->url->link('account/order', '', 'SSL'),
$this->url->link('account/download', '', 'SSL'),
$this->url->link('information/contact'));                                                      //строка 58
} else {
$this->data['text_message'] = sprintf($this->language->get('text_guest'),
$this->url->link('information/contact'));
}

Где искать?
Подскажите, кто разобрался...

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


Покажите содержимое переменной $_['text_customer'] в catalog/language/{Нужный_язык}/checkout/success.php

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

Та же ошибка.

Выдается после завершения оформления заказа.

Warning: sprintf() [function.sprintf]: Too few arguments in /home/имя_базы/мой-сайт.ru/www/catalog/controller/checkout/success.php on line 58

Фрагмент кода:

if ($this->customer->isLogged()) {

$this->data['text_message'] = sprintf($this->language->get('text_customer'),

$this->url->link('account/account', '', 'SSL'),

$this->url->link('account/order', '', 'SSL'),

$this->url->link('account/download', '', 'SSL'),

$this->url->link('information/contact'));                                                      //строка 58

} else {

$this->data['text_message'] = sprintf($this->language->get('text_guest'),

$this->url->link('information/contact'));

}

Где искать?

Подскажите, кто разобрался...

 

Нужно открыть файл catalog/controller/checkout/success.php

  • найти кусок кода
		if ($this->customer->isLogged()) {
			$this->data['text_message'] = sprintf($this->language->get('text_customer'), $this->url->link('account/account', '', 'SSL'), $this->url->link('account/order', '', 'SSL'), $this->url->link('account/download', '', 'SSL'), $this->url->link('information/contact'));
		} else {
			$this->data['text_message'] = sprintf($this->language->get('text_guest'), $this->url->link('information/contact'));
		}

и заменить на

		if ($this->customer->isLogged()) {
			$this->data['text_message'] = sprintf($this->language->get('text_customer'), $this->url->link('account/account', '', 'SSL'), $this->url->link('account/order', '', 'SSL'), $this->url->link('account/download', '', 'SSL'), $this->url->link('information/contact'));
		} else {
			$this->data['text_message'] = sprintf($this->language->get('text_guest'), '', $this->url->link('information/contact'));
		}

Называется - найдите одно отличие=)

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

  • 2 months later...
  • 8 months later...
Была такая же ошибка, при покупке без регистрации: Warning: sprintf(): Too few arguments in /home/virtwww/w_kosmol8de_02879d1e/http/catalog/controller/checkout/success.php on line 55

Поправил как выше описано, всё чудесно заработало..

 

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

           Warning: sprintf(): Too few arguments in /home/virtwww/w_kosmol8de_02879d1e/http/catalog/controller/checkout/success.php on line 53

Подскажите где, что теперь подправить?

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


  • 2 months later...

Присоединюсь к предыдущему оратору. Подправил, как написано выше, для заказа без регистрации ошибка устранилась. А для зарегистрированного пользователя появилась:

Warning: sprintf() [function.sprintf]: Too few arguments in /home/host1371029/мойсайт.ru/htdocs/stests/catalog/controller/checkout/success.php on line 53.

Подскажите как устранить. Версия опенкарт 1.5.6.1-2

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


Покажите свою строку 53

и

строку для $_['text_customer'] из файла catalog\language\russian\checkout\success.php (подразумевается, что используется русский язык).

 

Нужно либо в строку 53 добавить недостающий параметр(ы), либо в языковом файле убрать лишние плейсхолдеры %s

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


Вот 53 строка:

$this->data['text_message'] = sprintf($this->language->get('text_customer'), $this->url->link('account/account', '', 'SSL'), $this->url->link('account/order', '', 'SSL'), $this->url->link('account/download', '', 'SSL'), $this->url->link('information/contact'));
Вот из языкового файла:
$_['text_customer'] = '<p>Ваш заказ <a href="%s">№%s</a> успешно сформирован!</p><p>Вы можете просматривать все ваши заказы в <a href="%s">Личном кабинете</a> в разделе <a href="%s">"История заказов"</a>.</p><p>Если ваша покупка связана с файлом для скачивания, тогда вам нужно перейти в раздел <a href="%s">"Файлы для скачивания"</a> и скачать купленный товар.</p><p>Все свои вопросы вы можете направить в <a href="%s">Службу поддержки</a> клиентов нашего магазина.</p><p>Спасибо за покупки в нашем интернет-магазине!</p>';
После подтверждения заказа появляется страница с надписью "Ваш заказ сформирован!", а остального текста нет. 
Надіслати
Поділитися на інших сайтах


Строка в языковом файле хочет 6 параметров, а строка 53 дает ей только 4. Чтобы просто избавиться от ошибки (речь пока не идет о полной реализации "хотелки"), строку 53 замените на это:
$this->data['text_message'] = sprintf($this->language->get('text_customer'),

$this->url->link('account/account', '', 'SSL'), //Пока используется "неродная" ссылка на личный кабинет, здесь должна быть ссылка на страницу с текущим заказом
 'Номер заказа',                                //Здесь должен быть номер текущего заказа

 $this->url->link('account/account', '', 'SSL'), 
 $this->url->link('account/order', '', 'SSL'), 
 $this->url->link('account/download', '', 'SSL'), 
 $this->url->link('information/contact'));

или

 
строку в языковом файле замените на это
$_['text_customer'] = '<p>Ваш заказ успешно сформирован!</p><p>Вы можете просматривать все ваши заказы в <a href="%s">Личном кабинете</a> в разделе <a href="%s">"История заказов"</a>.</p><p>Если ваша покупка связана с файлом для скачивания,тогда вам нужно перейти в раздел <a href="%s">"Файлы для скачивания"</a> и скачать купленный товар.</p><p>Все свои вопросы вы можете направить в <a href="%s">Службу поддержки</a>клиентов нашего магазина.</p><p>Спасибо за покупки в нашем интернет-магазине!</p>';  

Если поменяете строку 53, дальше нужно будет смотреть, откуда можно вытащить номер заказа и инфу для оформления его в виде ссылки.

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


  • 10 months later...
Гість
Ця тема закрита для публікації повідомлень.
  • Зараз на сторінці   0 користувачів

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

×
×
  • Створити...

Important Information

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