组合3个单独的工作脚本-用于drupal计算字段


Combine 3 separate working scripts - for drupal computed field

我在drupal中使用计算字段,它只使用直接的PHP,唯一的问题是我不太了解PHP。

下面的3个脚本分别工作。当我尝试使用不同的语法来组合它们时,它们都失败了。我想做的是将3个字段相加,这些字段来自3个不同的字段集或字段集合。

第一个

$price = 0;
$wrapper = entity_metadata_wrapper($entity_type, $entity);
foreach($wrapper->field_venue_sites_simple as $collection) {
   $price += $collection->field_site_fee->value();
}
$entity_field[0]['value'] = $price;

第二个

$price = 0;
$wrapper = entity_metadata_wrapper($entity_type, $entity);
foreach($wrapper->field_venue_sites_w_catering as $collection) {
   $price += $collection->field_site_fee->value();
}
$entity_field[0]['value'] = $price;

第三个

$price = 0;
$wrapper = entity_metadata_wrapper($entity_type, $entity);
foreach($wrapper->field_venue_site as $collection) {
   $price += $collection->field_peak_pricing->field_peak_price_saturday->value();
}
$entity_field[0]['value'] = $price;

我尝试过将它们组合在一起,但不起作用:

$price = 0;
$wrapper = entity_metadata_wrapper($entity_type, $entity);
$price = 
$wrapper->field_venue_sites_simple->field_site_fee->value() +
$wrapper->field_venue_site->field_peak_pricing->field_peak_price_saturday->value() +
$wrapper->field_venue_sites_w_catering->field_site_fee->value();
$entity_field[0]['value'] = $price;

我知道foreach在数组中循环。我不需要它循环,所以我可以把它取出来。它们都是多个值字段,但我只需要它来提取一个值。

我也试过这个,但也不起作用:

$wrapper = entity_metadata_wrapper($entity_type, $entity);
$collection1 = $wrapper->field_venue_sites_simple;
$collection2 = $wrapper->field_venue_site;
$collection3 = $wrapper->field_venue_sites_w_catering;

$entity_field[0]['value'] =
$collection1->field_site_fee->value()+
$collection2->field_peak_pricing->field_peak_price_saturday->value()+
$collection3->field_site_fee->value();

非常感谢您的帮助!一整天都在搞这个。

只需将三个示例不同的部分合并即可…

$price = 0;
$wrapper = entity_metadata_wrapper($entity_type, $entity);
foreach($wrapper->field_venue_sites_simple as $collection) {
  $price += $collection->field_site_fee->value();
}  
foreach($wrapper->field_venue_sites_w_catering as $collection) {
  $price += $collection->field_site_fee->value(); 
}
foreach($wrapper->field_venue_site as $collection) {
  $price += $collection->field_peak_pricing->field_peak_price_saturday->value();
}
$entity_field[0]['value'] = $price;