torf Posted March 11 Share Posted March 11 Hello, I'm trying to add or remove a value from a read only page reference field based on the fact if an image field on the same page is empty or not. The other values should not be affected. So in my ready.php I have: $wire->addHookBefore('Pages::saveReady', function($event){ $page = $event->arguments(0); if($page->hasField("images")) { if($page->images->count() > 0) { $page->my_page_reference_field = 'Title of referenced Page'; //-> this works and adds the value to the list $this->message("Added value"); } else { $page->my_page_reference_field->remove('Title of referenced Page'); //-> this doesn't $this->message("Value removed"); } } }); Adding the Value works great, but I cannot figure out how to remove a specific value. Does anybody know how to solve this? Link to comment Share on other sites More sharing options...
bernhard Posted March 11 Share Posted March 11 On 3/11/2025 at 10:18 AM, torf said: $page->my_page_reference_field->remove('Title of referenced Page'); //-> this doesn't Expand Not sure but a quick shot: use ->removeAll(); Link to comment Share on other sites More sharing options...
torf Posted March 11 Author Share Posted March 11 On 3/11/2025 at 12:10 PM, bernhard said: Not sure but a quick shot: use ->removeAll(); Expand Thanks - that indeed works, but removes all the values from the field. In my case I'd need to keep the other values and just delete a specific on. But I'll keep that in mind as plan B if I do not find another solution. Link to comment Share on other sites More sharing options...
bernhard Posted March 11 Share Posted March 11 First you need to make sure to get the value of the page reference field as PageArray (not a single page object or such). This might depend on your setting of the field and whether output formatting is turned on or off (in the hook it should be off, but just in case...). As ->removeAll() works it should be a PageArray in your case. In my case the field is called "pagelink" and I force the return type to be a pagearray via [] Then from the pagearray you can remove your page via remove("id=...") which is all you need I think 2 Link to comment Share on other sites More sharing options...
torf Posted March 11 Author Share Posted March 11 Ah. Thanks a lot - It's a bit more complicated then I thought, but this will work. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now