2012-01-21 3 views
2

Я создаю веб-приложение, которое в значительной степени полагается на Ajax для его интерактивности, и я хочу обойти проблему наличия двух версий моих шаблонов HTML, чтобы держать вещи DRY.Шаблон для PHP + JS, но

Я столкнулся с вопросом здесь, template engine both for JS and PHP, который придумал хороший ответ, mustache. Затем я вспомнил все, что не смог бы сделать, например Zend_View_Helpers, и другие вещи, зависящие от PHP.

Вопрос в том, есть ли лучшие решения? Возможно, это позволило бы мне использовать Zend_View (или аналогично выводу на язык шаблонов), что позволило бы мне использовать гибкость PHP и его библиотек, но СУЩНОСТЬ языка шаблона.

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

Благодаря

ответ

0

Хотя я не совсем уверен, что вы пытаетесь сделать, как об использовании the Twig project. Вы можете передать объекты в шаблон и получить доступ к его свойствам и методам:

Для удобства foo.bar делает следующие вещи на PHP слой:

  • проверить, если Foo является массивом и баром действительный элемент;
  • Если нет, и если foo является объектом, проверьте, что бар является допустимым свойством;
  • Если нет, и если foo является объектом, проверьте, что бар является допустимым методом (даже если bar является конструктором - вместо этого используйте __construct());
  • Если нет, и если foo является объектом, проверьте, что getBar является допустимым методом;
  • если нет, и если foo является объектом, проверьте, что isBar является допустимым методом;
  • если нет, верните нулевое значение.

Foo [ «бар»], с другой стороны, работает только с PHP массивы:

  • проверить, если Foo является массивом и бар действительный элемент;
  • если нет, верните нулевое значение.

Существует также JS port of the Twig templating language.

+0

Это шаг в правильном направлении, да. Я займусь этим. Я предполагаю, что я ищу, это возможность иметь 2 этапа шаблонов. PHP в первом, который выводит язык-агностический шаблон, в Twig, Mustache и т. Д. Может быть, это сумасшедшая идея, может быть, это совсем не то, чего я хочу? – Adam