У Blade , вроде, все что надо есть - и определение собственных тегов-функций и даже php вставки, так что выбор шаблонизатора тут не принципиален. Важным моментом при реализации такого движка будет обеспечить единственный текст задания в единственном месте. Будет плохо, если каждый тест нужно будет сопровождать десятком отдельных записей БД или файлов. От каждого теста будет требоваться
- текст самого задания, с вставленными полями - он порождается шаблоном
- данные по ответам - их можно породить при генерации текста и сохранить в сессии, к примеру или при первой генерации текста - в базе, или еще как извернутся... В сессии, вроде, нормально.
- При проверке введенных пользователем данных - извлечь из сессии
- Еще могут понадобится какие-то атрибуты, которые самим тестом определяются - теги-признаки самого теста, что-то типа (книга №6, страница 85, вопрос 3, ...) которые легко закрываются описанием дополнительных тегов шаблона, которые можно дописать с начала текста.
Нужно чтобы внутри текста, на языке шаблонизатора, можно было компактно и доступно для понимания описать желаемое поле ввода, возможные варианты ответа, правильные ответы и так далее, что поможет обработать ввод.