@dk-web

В чем вы создаете php/tpl/html шаблоны?

Написал трактат и удалил.. очень коротко.
Мне очень понравился Jade. Я его использую исключительно как сокращение синтаксиса. Убил кучу времени и сломал многим мозг как их поженить с php тегами. Но финального итога так и нет. Все уперлось.. не поверите в банальное отсутствие переносов на новую строку.
<div class="slogan"><?php if ($test == 0): ?>
          <p>Test zero</p><?php elseif ($test == 1): ?>
          <p>Test one</p><?php else: ?>
          <p>Other test</p><?php endif; ?>
        </div>

Если бы это переносилось. то цены бы не было и я бы был счастлив.
Но...
Поставил Emmet в Sublime2... но это все же не то...
Пробовал писать под smarty - {...} - тоже jade не съедает(
Уверен, что раз такой вопрос возникает только у меня. то это настолько просто решается...
Еще раз... мне просто очень понравилась связка Jade-Sass (табуляционный, упрощенный синтаксис) и все плюшки от Gulp к этому.. но вот PHP ну никак сюда не вклеивается...
  • Вопрос задан
  • 597 просмотров
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
но вот PHP ну никак сюда не вклеивается...

именно так.

Есть модули на js, есть решения на php. Вам выбирать что и как юзать.

Я как-то подумывал о том что бы впилить поддержку jade/haml в twig, благо он это позволяет делать благодаря своей гибкости, но так как я не часто пишу шаблоны для php (я уже больше года как разделил фронтэнд и бэкэнд и поселил между ними rest), то как-то не удалось.
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
Я использую веб-компоненты, шаблоны сами пишу на haml с автоматической конвертацией в html.
Polymer позволяет избавиться от подобной каши на сервере полностью, потому как всё работает на фронтенде.

P.S. Посмотрел я на Jade, буду теперь переходить с HAML, не нравятся мне эти штучки из мира Ruby. Вот бы ещё CoffeeScript на сто-то заменить, да чтобы с тернарным оператором...) Спасибо, @dk-web)
Ответ написан
@mr-molodoy
У Вас php занимается компиляцией jade?
Если я правильно понимаю то Вы хотите сделать что-то вроде?
doctype html
html
  head
    style
      include style.css
  body
    <?php if (isHome() == 'index') { ?>
        h1 Index page
    <?php } else { ?>
        h1 <?= $page->title ?>
    <?php } ?>
    p Welcome to my super lame site.
    script
      include script.js


Если я правильно понял, то - почитайте может ли библиотека, которую Вы используете в php для компиляции Jade принимать не путь к шаблону для рендеринга а контент, если да то делайте примерно так:
function renderJade($file) {
         $jadeCompiler = new Jade\Compiler;

         ob_start();
         include $file; // здесь Jade шаблон
         $jadeContent = ob_get_contents();

         $template = $jadeCompiler->compileContent($jadeContent);
         
         return $template;
     }

     print renderJade("path/to/jade/template.php" );


Конечно, что у библиотеки используемой Вами отличается способ инициализации и названия методов, но
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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