Hi there, I’m reworking my entire Kirby Invoicing project that I posted under “Interesting Use Cases” a while ago.
Planning an open source release at some point—particularly for freelancers wanting to take charge of their own finances ![]()
Question
I’m stuck on updating individual keys in structure fields with a hook plugin within the panel.
Example of Failed Attempt
Here is my failed attempt to update the sum key in the following example based on (quantity * rate).
// Structured field content (content/sales/invoice.txt)
Items:
-
description: Cake
quantity: "1"
rate: "200"
sum: ""
date: ""
-
description: Biscuits
quantity: "2"
rate: "50"
sum: ""
date: ""
Concept for the hook I’m trying to set up.
// Hooks plugin (site/plugins/hooks.php)
$kirby->set('hook', 'panel.page.update', function ($page) {
// Update item sum
$items = $page->items()->toStructure();
foreach ($items as $item) {
$item = array()
'quantity' => $item->quantity()->float(),
'rate' => $item->rate()->float(),
'sum' => $quantity * $rate,
];
}
$items->update(array(
'items' => yaml::encode($items),
));
});
What am I missing? Would be grateful for any tips you might have.
Please do shoot me an email if you’d like to know more about the project!
Thanks, Oliver.