Page::setValuesFrom($page,[$fields])

Version 3.8

Set values from other page

Copy field values from other page values.

Source page can be from different folder than target.

Return value

Object Page

Arguments

$page
object Page that values are copied from.
$fields
Decimal delimited list of field names.
Default: All fields
If target field has different name than source, name can be specified as: target_field=source_field
source_fields is mapped against Page::parseText()
If target field is not recognised as field or value mapping, it is set as plain text.

Example

$Delivery->setValuesFrom($Order,'name, delivery_address=address');

Full documentation

Create Delivery from Order

// Open ORder and create Delivery
$Order    = $this->get('page', 'order', $orderId);
$Delivery = $this->get('page', 'delivery');

// Copy field values from Order
$Delivery->setValuesFrom($Order,'
    customer,
    product,
    delivery_address,
    delivery_instruction
');


// Set additional values
$Delivery->setValue('order', $Order->getId();
$Delivery->setValue('status', 'New');

// Save and open Delivery
$Delivery->save()->open();

Set value from different field name

If target page has different field name than source, you can define a custom name mapping: targetField = sourceField

$Delivery->setValuesFrom($Order,'
  delivery_date = agreed_delivery_date
');

Using complex field definitions

$Delivery->setValuesFrom($Order,'
  receiver = client.contact_person,
  town = delivery_address.toimipaikka,
  summary = <DIV>{order_date.getMonth()} {order.client.contact_person}</DIV>
');

Setting plain value

If target field is not recogniced as a field or value mapping, it is set as plain text:

$Delivery->setValuesFrom($Order,'
  total_amount,
  maksuaika = 14
  maksuehto = Netto
');