Хобрук: Ваш путь к мастерству в программировании

joomla пустое место перед модулем

В настоящее время я разрабатываю собственный модуль, и по какой-то причине он добавляет пробел перед тем, что я вывожу. Моя установка такова:

основной класс находится в helper .php, логика находится в mod_name .php, вывод находится в /tmpl/default .php

Странно то, что если у меня в классе есть метод, возвращающий html. И тогда я вызываю этот метод в своем шаблоне, все в порядке, никаких дополнительных строк не добавляется. Но если я попытаюсь записать вывод, даже обычный текст, в свой шаблон или mod_name.php, я получу эту дополнительную строку.

Вот скриншот: введите здесь описание изображения

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


Ответы:


1

Оказалось, что проблема была в том, что я включал 2 файла, каждый из которых содержал отдельный класс, по какой-то причине, когда я включал только 1 файл, все работало нормально. Во включенном файле не было пробелов, и он не генерировал никакого вывода, он содержал только логику. Спасибо за ваше время и ответы.

ИЗМЕНИТЬ:

Недавно снова наткнулся на эту проблему, оказалось, что UTF-8 без BOM - это то, что нужно, НО с точки зрения MVC убедитесь, что точка входа ваших компонентов "./com_helloworld/helloworld.php" - это UTF-8 без BOM. во-первых!

06.02.2012
  • Да, какое-то время я не мог понять, что сам... каким-то образом кодировка файла добавляла пробел, заключенный в двойные кавычки. Бывает и с компонентами... 22.07.2012

  • 2

    UTF-8 без спецификации - это ответ. Я сделал 3 сложных веб-сайта Joomla с условным CSS, чтобы справиться с этой проблемой, прежде чем нашел причину. Я также нашел этот скрипт где-то, чтобы поместить его в корень веб-сайта Joomla для рекурсивного автосохранения файлов UTF-8 no BOM php. Это сработало и сэкономило мне много времени:

    <?php 
    // Tell me the root folder path.
    // You can also try this one
    // $HOME = $_SERVER["DOCUMENT_ROOT"];
    // Or this
    // dirname(__FILE__)
    $HOME = dirname(__FILE__);
    // Is this a Windows host ? If it is, change this line to $WIN = 1;
    $WIN = 0;
    
    // That's all I need
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>UTF8 BOM FINDER and REMOVER</title>
    <style>
    body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
    .FOUND { color: #F30; font-size: 14px; font-weight: bold; }
    </style>
    </head>
    <body>
    <?php
    $BOMBED = array();
    RecursiveFolder($HOME);
    echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';
    foreach ($BOMBED as $utf) { echo $utf ."
    \n"; }
    echo '</p>';
    
    // Recursive finder
    function RecursiveFolder($sHOME) {
      global $BOMBED, $WIN;
    
      $win32 = ($WIN == 1) ? "\\" : "/";
    
      $folder = dir($sHOME);
    
      $foundfolders = array();
      while ($file = $folder->read()) {
        if($file != "." and $file != "..") {
          if(filetype($sHOME . $win32 . $file) == "dir"){
            $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
          } else {
            $content = file_get_contents($sHOME . $win32 . $file);
            $BOM = SearchBOM($content);
            if ($BOM) {
              $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
    
              // Remove first three chars from the file
              $content = substr($content,3);
              // Write to file 
              file_put_contents($sHOME . $win32 . $file, $content);
            }
          }
        }
      }
      $folder->close();
    
      if(count($foundfolders) > 0) {
        foreach ($foundfolders as $folder) {
          RecursiveFolder($folder, $win32);
        }
      }
    }
    
    // Searching for BOM in files
    function SearchBOM($string) { 
        if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
        return false; 
    }
    ?>
    </body>
    </html>
    
    08.12.2012

    3

    Сегодня я столкнулся с подобной проблемой, и мне удалось решить ее, закодировав макет модуля в «UTF-8 без спецификации».

    17.01.2012

    4

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

    31.12.2011
  • Я знаю, о чем вы говорите, но я использую свой собственный шаблон, поэтому все эти скрытые элементы div были удалены. 06.02.2012
  • Новые материалы

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

    Что в лицо
    Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

    Почему шаблоны проектирования и почему нет?
    Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

    Создание дизайна обуви с помощью машинного обучения
    Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

    GraalVM в 2022 году: итоги года
    2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..