【问题标题】:Drupal 7: How to render an individual element after it's array has been rendered?Drupal 7:如何在渲染数组后渲染单个元素?
【发布时间】:2018-05-23 05:59:24
【问题描述】:

我一直在处理其他人的代码,他们正在渲染表单。在 .tpl 文件中,它们会呈现一些单独的元素:

<?php print render($form['datepicker']); ?>

在渲染剩余的表单元素之前:

<?php print render($form); ?>

我了解到渲染单个数组项(如上面的日期选择器)将在调用整个数组时将其排除在渲染之外。但是有没有办法排除某些东西并在 它的父数组被渲染之后渲染它。

例如:

<?php print render($form['datepicker']); ?> //<-- Will not be rendered in render($form);
<?php print render($form); ?> 
<?php print render($form['termsAndConditions']); ?> //<-- Will be render twice, here and in render($form);

(目标是在剩余的表单元素被渲染后,将 tersmAndConditions 元素包装在它自己的 HTML 中。)

【问题讨论】:

    标签: php drupal drupal-7


    【解决方案1】:

    使用

    隐藏($form['datepicker']);

    它会从 $form 中排除 'datepicker' 但 $form['datepicker'] 仍然存在用于渲染

    这意味着你会这样做

    hide($form['datepicker']);
    print render( $form );
    

    对于 $form['termsAndConditions'] 你需要打印两次你必须在渲染之前将它存储在一个变量中

    就像你的完整代码一样

    hide($form['datepicker']); // // We hide the datepicker now so that we can render them later.
    print render($form['datepicker']);
    $termsAndCond = $form['termsAndConditions'];
    print render( $form );
    print render($termsAndCond);
    

    希望这能解决你的问题

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多