Шаблоны PHP - с [закрытым] PHP

Если вы получаете эту ошибку при попытке ссылки на файл C, сначала дважды проверьте имена функций для опечаток. Затем дважды проверьте, что вы не пытаетесь вызвать функцию C из среды C ++ / Objective-C ++ без использования конструкции extern C {}. Я рвал волосы, потому что у меня был класс, который был в файле .mm, который пытался вызвать функции C. Это не работает, потому что в C ++ символы искажены. Фактически вы можете увидеть конкретные символы, созданные с помощью инструмента nm. Terminal на путь к файлам .o и запустите nm -g в файле, который вызывает символ, и тот, который должен иметь этот символ, и вы должны увидеть, совпадают ли они или нет, что может дать ключ к ошибке .

nm -g file.o

Вы можете проверить символы C ++, которые были запятыми:

nm -gC file.o
20
задан alain.janinm 30 April 2012 в 21:14
поделиться

15 ответов

Вы не должны открывать теги несколько раз. Можно также сделать функцию из него, если Вы делаете то же самое многократно:

<?php
function makeul($items, $classes) {
  $c = count($classes);
  $out = "";

  if (isset($items) && count($items) > 0) {
    $out = "<ul>\n";
    foreach ($items as $item) {
      $out .= "\t<li class=\"" . $classes[$i++%$c] . "\">$item</li>\n";
    }
    $out .= "</ul>\n";
  }
  return $out;
}
?>

other page content

<?php
$persons = array('John', 'Jack', 'Jill', 'Jason');
$classes = array('odd', 'even');
print makeul($persons, $classes);
?>

кроме того, если Вы не возражаете использовать JavaScript, , Jquery делает вещи сделанной модификацией 2 довольно легких (например, для зебры, чередующей таблицу):

$("tr:odd").addClass("odd");
$("tr:even").addClass("even");
12
ответ дан 29 November 2019 в 23:17
поделиться

Если то, что съеживается Вы, является открывающими и закрывающими тэгами, запишите функцию, которая создает строку HTML, и затем имейте ее, возвращают его. По крайней мере, это сохранит Вас некоторые теги.

0
ответ дан 29 November 2019 в 23:17
поделиться

Ученый является легким, чистым PHP шаблонная обработка механизма. Версия 2 имеет цикл плагин, подобный Присяжному острослову один упомянутый ранее. Я не смог найти ссылку на тот же плагин в версии 3, но я уверен, что Вы могли записать это довольно легко.

2
ответ дан 29 November 2019 в 23:17
поделиться

Я использую По модулю как Вы, сделал в Вашем примере все время.

0
ответ дан 29 November 2019 в 23:17
поделиться

Я использую PHPTAL для шаблонной обработки, потому что это записано в 100%-м фактическом HTML с данными заполнителя, таким образом, это даже работает в WYSIWYG-редакторе на веб-дизайнера. Это и это - просто путь, легкий понять.

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

Код PHP:

  $tal = new PHPTAL;
  $tal->setTemplate('people.htm')
      ->set('people', array('John', 'Jack', 'Jill', 'Jason'));
  echo $tal->execute();

Шаблон:

  <ul>
    <li tal:repeat="person people" tal:content="person">John Doe</li>
  </ul>

Вывод:

  • John
  • Jack
  • Jill
  • Jason
  • Теперь, очевидно, я не сделал бы шаблон для этого мало, но я мог использовать макрос для него или создать целую страницу и включать ту переменную. Но Вы получаете идею. Используя PHPTAL примерно утроил мою скорость при шаблонной обработке и программировании, только простотой (никакой новый синтаксис для изучения как присяжный острослов).

    4
    ответ дан 29 November 2019 в 23:17
    поделиться

    Я использовал Движок шаблонов Присяжного острослова в прошлом. Это Довольно твердо. И поскольку можно, вероятно, сказать с веб-сайта; это имеет вполне большую базу пользователей и регулярно обновляется.

    Это находится в чистом PHP также.

    2
    ответ дан 29 November 2019 в 23:17
    поделиться

    Вы рассмотрели phptal?. одно основное преимущество его (или что-то подобное) - то, что Вы получаете шаблоны, которые могут передать проверку. большинство php движков шаблонов, кажется, игнорирует это.

    4
    ответ дан 29 November 2019 в 23:17
    поделиться

    Это не чистый PHP (синтаксис шаблонной обработки затем), но это работает действительно хорошее; Присяжный острослов .

    Для циклов можно сделать:

    
    <ul>
    {foreach from=$var name=loop item=test}
      {if $smarty.foreach.loop.first}<li>This is the first item</li>{/if}
      <li class="{cycle values="odd,even"}">{$var.name}</li>
      {if $smarty.foreach.loop.last}<li>This was the last item</li>{/if}
    {/foreach}
    </ul>
    
    5
    ответ дан 29 November 2019 в 23:17
    поделиться

    Крошечный, Но Сильный

    www.tinybutstrong.com

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

    В файле

    $TBS->MergeBlock('blk1',$sqlconnect, "SELECT name from people ");
    

    PHP И в файле

    <ul>
        <li class="odd">[blk.name;block=ul]</li>
        <li class="even">[blk.name;block=ul]</li>
    </ul>
    

    HTML И вот именно. Заметьте, что HTML является полностью совместимым DreamWeaver. Кроме того, если бы я хотел сделать ту альтернативу более чем тремя стилями линии все, что я должен был бы сделать, добавляет дополнительная строка, возможно, с различными классами, таким образом

    <ul>
        <li class="linestyle1">[blk.name;block=ul]</li>
        <li class="linestyle2">[blk.name;block=ul]</li>
        <li class="linestyle3">[blk.name;block=ul]</li>
    </ul>
    
    8
    ответ дан 29 November 2019 в 23:17
    поделиться

    Я был поклонником HAML в течение некоторого времени, похоже, что у PHP-людей есть HAML: см. http: //phphaml.sourceforge .net /

    0
    ответ дан 29 November 2019 в 23:17
    поделиться

    Небольшая справка по циклу:

    <? $b=false; foreach($MyList as $name) { ?>
       <li class="row<?= $b=!$b ?>"><?= htmlspecialchars($name); ?></li>
    <? } ?>
    

    Если указать $ b =! $ B , он автоматически переключится между истинным и ложным. Поскольку false выводится как "", а true выводится как "1", то, определив классы css row и row1 , вы можете без проблем получить ваши изменяемые строки.

    рассмотрите используя : first-child css для другого стиля первого.

    6
    ответ дан 29 November 2019 в 23:17
    поделиться
    <?= ($i++ % 2 === 0) ? 'odd' : 'even' ?>
    

    Вы делаете это наоборот. Ваш первый элемент теперь называется четным, а не нечетным. Используйте ++ $ i.

    У меня та же проблема. Но я думаю, что ваше оригинальное решение является самым изящным. Так что я сделаю это.

    0
    ответ дан 29 November 2019 в 23:17
    поделиться

    Как насчет XSLT ? Единственная система шаблонов, за которой стоит орган по стандартизации. Работает одинаково для разных языков программирования. Изучите его один раз, используйте везде!

    3
    ответ дан 29 November 2019 в 23:17
    поделиться

    Компоненты Symfony: шаблоны

    alt text
    (источник: symfony-project.org )

    Symfony намеревается перейти на новую систему шаблонов , основанную на облегченная система шаблонов PHP веточка .

    Ведущий разработчик Фабьен Потенсье объясняет свое решение здесь: http://fabien.potencier.org/article/35/templating-engines-in-php-follow-up

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

    Компонент находится здесь: http://components.symfony-project.org/templating /

    3
    ответ дан 29 November 2019 в 23:17
    поделиться

    Я создал простую систему шаблонов на PHP, чтобы решить эту проблему. в то время как назад:

    http://code.google.com/p/templatephp/

    Требуется многомерный массив и требуется добавление некоторых дополнительных тегов в HMTL для создания объединенного шаблона.

    Это не такой сложный (хотя и мощный), как Smarty и некоторые другие решения, но в большинстве случаев выигрывает в простоте. Демонстрация создания меню:

    <p>Main Menu</p>
    <ul>
    {block:menu_items}
            <li><a href="{var:link}">{var:name}</a></li>
    {/block:menu_items}
    </ul>
    

    Объединено с ...

        array (
            'menu_items' => array (
                    array (
                            'link' => 'home.htm',
                            'name' => 'Home'
                    ),
                    array (
                            'link' => 'about.htm',
                            'name' => 'About Us'
                    ),
                    array (
                            'link' => 'portfolio.htm',
                            'name' => 'Portfolio'
                    ),
                    array (
                            'link' => 'contact.htm',
                            'name' => 'Contact Us'
                    )
            )
    );
    

    Будет создано меню ...

    <p>Main Menu</p>
    <ul>
            <li><a href="home.htm">Home</a></li>
            <li><a href="about.htm">About Us</a></li>
            <li><a href="portfolio.htm">Portfolio</a></li>
            <li><a href="contact.htm">Contact Us</a></li>
    </ul>
    
    0
    ответ дан 29 November 2019 в 23:17
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: