0

通过使用 Twig 的 PHP,我可以执行以下操作:

布局.twig

<html>
<body>
{% block content %}{% endblock %}
</body>
</html>

表格.twig

{% extends "layout.twig" %}
{% block content %}
<div class="form">{% block form %}{% endblock %}</div>
{% endblock %}

登录.twig

{% extends form %}
{% block form %}
<form>
    <input type="text" name="email" />
    <input type="submit">
</form>
{% endblock %}

这样我就有了所有页面的布局,带有表单和登录页面的页面布局。

但是使用 Slim,我只能指定所有模板的父主布局:

布局.slim

html
  body ==yield

以及我网站上每个页面的特殊布局:
login.slim

div.form
  form
    input type="text" name="email"
    input type="submit"

有没有一种简单的方法可以在 Slim 中实现多层次的 Twig 类继承?

4

3 回答 3

7

看起来我用 Sinatra 找到了 Slim 的解决方案:

布局.slim

html
  body
    == yield

form.slim

== slim :layout
  div.form
    == yield

登录.slim

== slim :form
  form
    input type="text" name="email"
    input type="submit"
于 2013-05-30T19:34:17.217 回答
0

我相信在 Rails 中它不存在模板继承之类的东西,但我相信yieldandcontent_for方法没有必要。

例如,您可以有一个_form.html.slim布局:

.form
  = yield

_login.html.slim部分:

form
  input type="text" name="email" 
  input type="submit"

当您想使用表单布局显示登录时,您应该执行以下操作:

= render partial: "login", layout: "form"
于 2013-05-30T18:54:43.773 回答
0

login.html.slim

= render layout: 'form' do
  form
    input type="text" name="email"
    input type="submit"
于 2015-05-01T11:04:02.773 回答