PascalKonings Posted May 13, 2022 Share Posted May 13, 2022 After searching through this forum and not being able to find a working solution, thought I'd try it here. I must be overlooking something really simple. I have a template with a repeater field, containing a number of items. I want to use the API to remove one of these items, based on its ID, save the repeater (if necessary) and then save the page on which it resides. // The page with template "agenda" $agenda = wire('pages')->find("template=agenda")[0]; // The event field is the repeater field here // Getting the repeater item by ID $event = $agenda->event->get('id='.$id); // Disable output formatting $agenda->of(false); // Remove the event item from the event repeater $agenda->event->remove($event); // Not sure if this is needed // $agenda->event->save(); // Save the page $agenda->save(); Sofar I'm getting this error: Trying to get property 'id' of non-object Which seems to be because of the remove action: $agenda->event->remove($event); If I remove this line, all seems to work as intended, but obviously the repeater items is not being removed. What am I missing here? Link to comment Share on other sites More sharing options...
BillH Posted May 13, 2022 Share Posted May 13, 2022 My guess would be that it's the line getting a value for $event where things start to go wrong. I'm wondering in particular where you're getting the value of $id from, and whether it's valid? You might want to try var_dump() to check whether $event actually is an object (and if so, if it looks as if it might be a repeater item): var_dump($event); 1 Link to comment Share on other sites More sharing options...
Jan Romero Posted May 13, 2022 Share Posted May 13, 2022 Repeater fields give you a PageArray. Have you tried getPageByID($id) to retrieve the item? Check the return value before removing. It might be NullPage, or when using get() it might be null. As a matter of fact, since you already know the ID, it should be perfectly safe to just delete the page: $pages->get($id)->delete(); 1 Link to comment Share on other sites More sharing options...
PascalKonings Posted May 16, 2022 Author Share Posted May 16, 2022 On 5/13/2022 at 4:28 PM, BillH said: My guess would be that it's the line getting a value for $event where things start to go wrong. I'm wondering in particular where you're getting the value of $id from, and whether it's valid? You might want to try var_dump() to check whether $event actually is an object (and if so, if it looks as if it might be a repeater item): var_dump($event); Hi Bill, yes it is an object and contains an id and all other information in the repeater field. Deleting it using @Jan Romero suggestion still throws me an error in the module "App API" that I'm using to delete this item: devmessage: {message: "Trying to get property 'id' of non-object", location: '/Applications/MAMP/htdocs/hkg/wire/core/PagesEditor.php', line: 296} error: "Internal Server Error" However deleting it from PHP without the module using: wire('pages')->get(1372)->delete(); seems to work fine. And it is the exact same code as in my App API endpoint. Must be a bug in the module then... 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