Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问自定义模板中的Drupal实体字段_Drupal_Drupal 7 - Fatal编程技术网

访问自定义模板中的Drupal实体字段

访问自定义模板中的Drupal实体字段,drupal,drupal-7,Drupal,Drupal 7,首先,让我说这是我在Drupal中的第一个项目,我仍然很困惑,如果我的问题很愚蠢,我道歉 我使用实体API在Drupal7中创建了一个自定义实体。自定义实体表示高尔夫球场 我使用了本教程: 然后我尝试添加一个自定义主题,为此我遵循以下步骤: 我的回调函数如下所示: function view_golf_course($id) { $courses = entity_load('golf_course', array($id)); $course = $courses[$id]; dr

首先,让我说这是我在Drupal中的第一个项目,我仍然很困惑,如果我的问题很愚蠢,我道歉

我使用实体API在Drupal7中创建了一个自定义实体。自定义实体表示高尔夫球场

我使用了本教程: 然后我尝试添加一个自定义主题,为此我遵循以下步骤:

我的回调函数如下所示:

function view_golf_course($id) {
  $courses = entity_load('golf_course', array($id));
  $course = $courses[$id];
  drupal_set_title($course->name);
  $output = entity_view('golf_course', array($course));
  $output += array(
    '#theme'     => 'golf_course',
    '#element'   => $output,
    '#view_mode' => 'full',
    '#language'  => LANGUAGE_NONE,
  );
  return $output;
}
这是我的
钩子主题()

问题是在
golf_course.tpl.php
中,我只能通过这种方式访问golf course变量(在本例中,我将访问地址):

如您所见,为了访问地址,我必须使用“the Lakes Golf Club”(当前显示的高尔夫球场的名称)作为键,但很明显,每次我显示不同的高尔夫球场时,该名称都会发生变化,因此我的问题是:

如何访问高尔夫球场属性而不必将高尔夫球场名称用作密钥

编辑

实体视图()的文档说明如下:

返回值

可渲染数组,由实体类型和实体设置关键帧 标识符,如果存在,则使用实体名称-请参阅 实体_id()。如果没有关于如何查看实体的信息, 返回FALSE


那么,如何避免数组由实体的名称设置关键字呢?如果它是由id键入的,那就可以了,因为我的作用域中有
$id
变量。

对于任何想知道这个问题答案的人: 如果查询的结果集包含多行,则entity_view将创建一个具有空索引的数组,如下所示:

$element['golf_course']['']
现在,通过访问
['#entity']
数组,您可以访问结果集中所有行的所有实体字段,如下所示:

$element['golf_course']['']['#entity'] // all golf courses
$element['golf_course']['']['#entity'][0] // first golf course in the result set
$element['golf_course']['']['#entity'][0]['label'] // label of first golf course
$element['golf_course']['']['#entity'][0]['address'] // address of first golf course
另一方面,如果你的模板是纯PHP的,你可以避免使用
entity\u view()
,你会得到一个更干净的数组(你没有
['golf\u course'][''']['.\entity']]
部分)

$element['golf_course']['']
$element['golf_course']['']['#entity'] // all golf courses
$element['golf_course']['']['#entity'][0] // first golf course in the result set
$element['golf_course']['']['#entity'][0]['label'] // label of first golf course
$element['golf_course']['']['#entity'][0]['address'] // address of first golf course