Перейти к содержанию
ks1313

[Решено {кодировка}] помогите разобраться с контоллером

Рекомендуемые сообщения

добрый день! я полный профан вообще. блондинистая блондинка.

вот эскперементирую, создаю для себя свой сайт сама.

образовалась проблема.

перестал работать  личный раздел в подвале сайта, а также в шапке: закладки, постоянный покупатель и оформление заказа.

выдает следующее:

 

Warning: Cannot modify header information - headers already sent by (output started at home/h77777/data/www/мой сайт.com/catalog/language/russian/russian.php:1) in /home/h77777/data/www/мой сайт.com/system/engine/controller.php on line 28Warning: Cannot modify header information - headers already sent by (output started at /home/h77777/data/www/мой сайт.com/catalog/language/russian/russian.php:1) in home/h77777/data/www/мой сайт.com/system/engine/controller.php on line 29

 

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

 

что в этих строчках не так. цифр по идее не должно там быть, но что должно?!

 

 }

protected function redirect($url, $status = 302) {
header('Status: ' . $status);
header('Location: ' . str_replace(array('&', "\n", "\r"), array('&', '', ''), $url));
exit();
}

 

заранее благодарю за ответ))) если кто-то захочет помочь))))

 

вот сам код:

 

<?php
abstract class Controller {
 protected $registry; 
 protected $id;
 protected $layout;
 protected $template;
 protected $children = array();
 protected $data = array();
 protected $output;
 
 public function __construct($registry) {
  $this->registry = $registry;
 }
 
 public function __get($key) {
  return $this->registry->get($key);
 }
 
 public function __set($key, $value) {
  $this->registry->set($key, $value);
 }
   
 protected function forward($route, $args = array()) {
  return new Action($route, $args);
 }

 protected function redirect($url, $status = 302) {
  header('Status: ' . $status);
  header('Location: ' . str_replace(array('&', "\n", "\r"), array('&', '', ''), $url));
  exit();    
 }
 
 protected function getChild($child, $args = array()) {
  $action = new Action($child, $args);
 
  if (file_exists($action->getFile())) {
   require_once($action->getFile());

   $class = $action->getClass();

   $controller = new $class($this->registry);

   $controller->{$action->getMethod()}($action->getArgs());
   
   return $controller->output;
  } else {
   trigger_error('Error: Could not load controller ' . $child . '!');
   exit();     
  }  
 }
 
 protected function render() {
  foreach ($this->children as $child) {
   $this->data[basename($child)] = $this->getChild($child);
  }
  
  if (file_exists(DIR_TEMPLATE . $this->template)) {
   extract($this->data);
   
        ob_start();
     
     require(DIR_TEMPLATE . $this->template);
     
     $this->output = ob_get_contents();

        ob_end_clean();
        
   return $this->output;
     } else {
   trigger_error('Error: Could not load template ' . DIR_TEMPLATE . $this->template . '!');
   exit();    
     }
 }
}
?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если в этих строчках кода вы ничего не меняли, значит проблема не здесь, а немного раньше. Здесь выполняется редирект(функция header). Эта функция работает только если перед ее вызовом не было ни каких выводов(это может быть все что угодно, пустые строки, теги, ошибки). А у вас явно перед ее вызовом идет какой-то вывод. Вспомните что последнее делали до появления ошибки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

https://opencartforum.com/topic/15992-strannyi-kod-v-iazykovom-faile-russianphp/?hl=russian.php

 

приложите исходник своего файла

/home/h77777/data/www/мой сайт.com/catalog/language/russian/russian.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нашла, в чем была проблема. видимо как-то не так изменила /catalog/language/russian/russian.php

хотела заменить, "купить" на "в корзину"

заменила только 25 строчку ($_['button_cart']         = 'В корзину';), но почему все перестало работать. делала по инструкции, о изменениях где-то еще никто не говорил.

в общем, max201181, спасибо Вам огромное за отклик! жаль только, что надпись пришлось вернуть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пожалуйста) Я тоже исправлял "В корзину":

$_['button_cart'] = 'В корзину';

 

Все работает нормально, когда сохраняете файл, проверяйте, чтобы кодировка стояла UTF-8

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, спасибо! перепроверила, действительно, видимо были изменения в кодировке)))))) а я даже не подумала перепроверить. никогда бы не догадалась))))) Боже, скоро придется перекрашивать волосы!

afwollis, спасибо, и Вам за отклик! приятно, что если что, в Донецке есть к кому обратиться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От VickoF
      Добрый день. У меня в классе продукта есть метод кототрый импортирует нужные товары, записей много и постоянно выскакивает ошибка таймаута. Решено запускать скрипт через консоль по ssh. Подскажите как в таком случае вызвать нужный контролер и в нем метод? Кто занимался подобным?
    • От Granled
      Здравствуйте составил вот такой запрос к базе данных (необходимо иметь возможность быстро редактировать сумму заказа из формы заказа):
      $tsum = $this->db->query("SELECT total FROM oc_order WHERE order_id=414");
      Как подставить в него id мне более менее понятно, сама база с запроса возвращает правильные данные.
      Вопрос - правильно ли я сделал запрос, так как шаблон переменную не возвращает. Пишет Undefined variable , как ее сделать правильно?
      И вообще можно ли лезть в базу данных с контроллера, или только в модели?
    • От Granled
      Нужно прописать и вывести в админку новую переменную, конкретно в форме изменения заказа (версия 2.3)
      Вроде бы все просто, берем контроллер /admin/controller/sale/order.php и пишем в нем к примеру data['переменная'] = $this-> 'значение'; после public function getForm() {
      Далее пишем в файле шаблона <?php echo $переменная; ?> и дело сделано, переменная обозначена. Но я видимо делаю что то не так, так как вижу Notice: Undefined variable.
      Что я делаю не так и как это сделать правильно?
    • От GoldenScrew
      Здравствуйте,
      создавая свой контроллер, подключил загрузил в него уже существующий
       
       
      в подключенном контроллере есть переменная
       
       
      как теперь мне получить значение переменной $data['test']?
    • От RootKit
      Мне нужно  изменить личный кабинет(создать контроллер и т.д.), но точно не знаю где находится папка отвечающая за страницу личный кабинет.
      Собственно задание:
      Доработать личный кабинет, чтобы зарег. пользователи могли писать новости, также добавить в меню в ЛК - ссылку на все новости пользователя и добавление новости. Также сделать отдельную стр. для всех новостей, всех пользователей и вывести в шапку сайта - ссылку на данную стр.    
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.