Как исправить форматирование вставки PHP в HTML через Gulp? - PullRequest
0 голосов
/ 23 октября 2019

php.json

{
    "data" : "<?php echo $data; ?>"
}

home.jade

script.
                var data = !{data};

templates.js

gulp.task('templates-in-one-folder', () => {
  let data = dddata('ru');
  return gulp.src('app/**/*.jade')
    .pipe(plumber({errorHandler: errorHandler('Error in \'templates\' task')}))
    .pipe(cached('jade'))
    .pipe(gulpif(global.watch, inheritance({basedir: 'app'})))
    .pipe(filter(file => /app[\\\/]pages/.test(file.path)))
    .pipe(jade({basedir: 'app', data}))
    .pipe(prettify({
      braceStyle: 'expand',
      indentWithTabs: true,
      indentInnerHtml: true,
      preserveNewlines: true,
      endWithNewline: true,
      wrapLineLength: 120,
      maxPreserveNewlines: 50,
      wrapAttributesIndentSize: 1,
      unformatted: ['use']
    }))
    .pipe(staticHash({asset: 'dist', exts: ['js', 'css']}))
    .pipe(rename({dirname: '.'}))
    .pipe(gulp.dest('dist'))
});

Мой вывод

</div>
        <script>
            var data = < ? php echo $data; ? > ;

        </script>
    </body>

Между '<' '?'пробелы вставляются и php код не получается. Как я могу это исправить? Я пытаюсь использовать htmlmin с ignoreCustomFragments с регулярным выражением, но это тоже не работает ... </p>

1 Ответ

0 голосов
/ 23 октября 2019

Здесь есть некоторые проблемы, как упоминает treyBake, вы никогда не должны смешивать PHP и JS.

Хотя есть много способов сделать это, первая проблема заключается в том, что файл .json не является файлом .php. Apache (или любой используемый вами веб-сервер) не будет обрабатывать этот скрипт, а просто вернет простой текст.

Вы можете попробовать:

  • создание jsonфайл из сценария php, либо по требованию, либо через запланированное событие, например cron.

  • с использованием ajax (для запуска сценария php, который создаст файл json) для загрузки данныхна страницу

Смысл SO в том, чтобы направить вас в правильном направлении, а не предоставить вам полное решение.

Я предлагаю вам попробовать использовать ajaxсценарий, вернись и расскажи нам, что случилось. Тогда мы можем предоставить больше рекомендаций / помощи

Удачи

D

...