4.3. 多服务注册


4.3.1. 检索有关服务的信息

要检索有关需要构建正确注册链接的服务的所有信息,您必须通过服务对象进行循环。服务是模型对象的一部分。

{% for service in provider.services %}
  .
  .
  .
{% endfor %}

4.3.2. 配置注册列

您已有布局和循环访问服务对象。现在,决定您要如何显示服务以及注册链接的信息。例如,通过服务描述和底部的注册链接将它们划分为列。每列将作为一门服务列框,其中包含所有必要的信息。

{% for service in provider.services %}
  <div class="service-column">
    <p>{{ service.name }}</p>
    <p>{{ service.description }}</p>
    .
    .
    .
  </div>
{% endfor %}

内部容器充当自定义 description 字段。service.name 是服务名称,在本例中是容器的名称。

4.3.3. 配置订阅

现在,自定义服务注册的主要部分 - 创建注册链接,提取注册 URL 和服务 ID。从 URL 的对象和服务 ID 中获取您迭代循环的服务对象的注册 URL。最终的链接代码类似如下:

<a href="{{ urls.signup }}?{{ service | toparam }}">Signup to {{ service.name }}</a>

您还必须考虑该用户可能已对某些服务进行了签名。创建要检查的条件块。

{% unless service.subscribed? %}
  <a href="{{ urls.signup }}?{{ service | toparam }}">Signup to {{ service.name }}</a>
{% endunless %}

因此,您可以生成最终代码:

{% for service in provider.services %}
  <div class="service-column">
      <p>{{ service.name }}</p>
      <p>{{ service.description }}</p>
      {% unless service.subscribed? %}
        <a href="{{ urls.signup }}?{{ service | to_param }}">Signup to {{ service.name }}</a>
      {% endunless %}
  </div>
{% endfor %}

4.3.4. styling

根据您拥有的服务数量,向生成的标记添加一些最终的接触。在本例中,它有两个,因此 service-column div 的 CSS 代码将是:

.service-column {
    float: left;
    margin-left: 10%;
    width: 45%;
}
.service-column:first-child {
  margin-left: 0;
}

在示例中,我们使用了基于百分比的布局动态分配包含不v 的尺寸上列的宽度。

现在,您应该有一个正常工作并正确忽略多个服务订阅页面。祝贺您!

如果您要以特定顺序显示列,请尝试使用条件表达式(if/else/case)条件服务名称或其他值。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.