Php 和 Drupal:在需要时如何在 Drupal 中使用 php 隐藏/显示我的链接


Php and Drupal: how do I hide/display my link when needed using php within Drupal?

如果我这样问这个问题也许更容易 - 使用下面的编码片段,我将如何编写代码以仅在状态中的值为"A"时才显示"更改"链接?

我认为我正在使这变得比它必须的更难,但是使用drupal模块结构和php让我感到困惑,因为我只是在学习模块开发。

下面数组中显示的链接出现在我每一行的末尾。 我只希望它在状态等于"A"时出现。

因为这个链接在这个数组中,所以我无法弄清楚如何以及在何处实现它。 我只想要这样的 [if 语句]:

if (drupal_render($form['status'][$key]['status']) == 'A',)
echo l(t('Change'), 'rooms/avail_room/' . $key . '/' . arg(1), array('attributes' => array('class' => 'room-stat-avail'))),
else{
echo "";
}

因此,当显示 HTML 表时,"更改"链接只会在状态值为"A"时出现在最后一列中

不敢相信我让模块工作,但无法根据需要打开/关闭此链接。 请参阅下面的代码片段:

function team_room_available_form($form) {
    $output = "No space available.";
  if ($form['roomid']) {
    foreach (element_children($form['roomid']) as $key) {
      $rows[] = array(
        'data' => array(
          drupal_render($form[''][$key]),
          drupal_render($form['room_title'][$key]),
          drupal_render($form['username'][$key]),
          drupal_render($form['status'][$key]['status']),
          l(t('Change'), 'rooms/avail_room/' . $key . '/' . arg(1), array('attributes' => array('class' => 'room-stat-avail'))),
        ),
        'class' => $form['status'][$key]['#value'],
      );
    }

你不应该真的在数组的每个元素上调用 drupal_render()。

drupal_render 是应用于可渲染数组的主题函数。检查 drupal 文档 drupal.org ...Drupal 7 中的渲染数组

实际上,这意味着您应该在创建可渲染数组之前在模块中应用逻辑。实际上,您的可渲染数组只是一堆遵循 Drupal 主题结构的值。

当你创建数组时,你的逻辑只是典型的PHP。使用Drupal,您应该真正尝试devel模块。它将帮助您输出结果并帮助您调试代码。