Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Data Model Questions /

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

how to automatically delete objects when page is deleted?


Go to End


2 Posts   1855 Views

Avatar
lise

Community Member, 47 Posts

20 April 2010 at 4:26pm

Hello,

let's imagine I have a page defined as follows :

class MyPage extends Page {
static $db = array(

etc..

);

static $has_many = array(
'myEntry' => 'myEntry'
);

}

'myEntry' is simply an object and is in a relation *only* with myPage. These objects are managed with the DOM.

When a page of type 'myPage' is deleted, the associated 'myObjects' objects remain in the database. Because the
application can only have one myPage , I would like that when a page 'myPage' is deleted, all the 'myEntries' be deleted too.

What is the best way to achieve this? Can we attached a function to the myPage class which will be called when an instance is
deleted from the Published site ?

An acceptable workaround would be to remind the administrator to remove object entries before he/she attempts to delete a page
but this would also require to 'catch' the action in CMS and attach a sort of callback function.

Please let me know if you have any tips or ideas ...or if this does not make much sense ..

Thanks,

Lise

Avatar
Willr

Forum Moderator, 5523 Posts

20 April 2010 at 6:08pm

You could use the built in onBeforeDelete() or onAfterDelete() handlers on your MyPage class

<?php

class MyPage extends Page {
//...

function onBeforeDelete() {

parent::onBeforeDelete();

// .. delete your objects

}