我在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;