Контекст подтеги в DotLiquid (с формами)
Я хотел бы иметь возможность получить доступ к объекту, переданному тегу формы в DotLiquid внутри дочерних тегов. Что-то вроде этого:
{% form '/action' requestObject %}
{% textinput Name %}
<button type="submit">Create Request</button>
{% endform %}
Где textinput
тег ищет name
поле на requestObject
а затем помещает значение в поле ввода текста. Моя жидкость довольно ржавая, поэтому, если я все делаю неправильно, я открыт для последовательных криков о том, что я чокнутый и что мне нужно сделать, чтобы стать лучше.
1 ответ
Решение
Это легко сделать в теге рендерера с Context
"s Stack
:
public class Form : Block
{
// public override void Initialize...
public override void Render(Context context, TextWriter writer)
{
context.Stack(() =>
{
context["form_obj"] = new FormObject();
result.Write("<form>");
base.Render(context, result);
result.Write("</form>");
}
}
}
Перед запуском действие передается ему, Stack
выдвигает новый стек переменных Hash (который просматривает цепочку для неустановленных переменных), а затем выводит его в конце. Идеально подходит для локализованной области видимости переменных.