使用Twig的PHP,我可以这样做:
layout.twig
<html>
<body>
{% block content %}{% endblock %}
</body>
</html>
form.twig
{% extends "layout.twig" %}
{% block content %}
<div class="form">{% block form %}{% endblock %}</div>
{% endblock %}
login.twig
{% extends form %}
{% block form %}
<form>
<input type="text" name="email" />
<input type="submit">
</form>
{% endblock %}
这样我就有了所有页面的布局,一个带有表单和登录页面的页面布局。
但是使用Slim我只能指定所有模板的父布局:
layout.slim
html
body ==yield
以及我网站上每个页面的特殊布局:
login.slim
div.form
form
input type="text" name="email"
input type="submit"
是否有一种简单的方法可以在Slim中实现具有多个级别的类似Twig的继承?
答案 0 :(得分:7)
看起来我找到了Slim与Sinatra的解决方案:
layout.slim
html
body
== yield
form.slim
== slim :layout
div.form
== yield
login.slim
== slim :form
form
input type="text" name="email"
input type="submit"
答案 1 :(得分:0)
我相信在Rails中它不存在类似模板继承的东西,但我认为没有必要使用yield
和content_for
方法。
例如,您可以使用_form.html.slim
布局:
.form
= yield
_login.html.slim
部分:
form
input type="text" name="email"
input type="submit"
当您想要使用表单布局显示登录时,您应该执行以下操作:
= render partial: "login", layout: "form"
答案 2 :(得分:0)
login.html.slim
= render layout: 'form' do
form
input type="text" name="email"
input type="submit"