Jump to content

Trouble deleting pages from the Frontend


Luis
 Share

Recommended Posts

Hey,

I think I could need some little help.

I got some Problems with deleting a page from the frontend.

I´m trying the following:

Click on a link and give this link via GET the $page-title.

In the next step I render a form and put this GET Variable in a hidden field.

After submit the script searches the page and delete it.

But it always throws me an error.

Here is my code so far from the delete page:

<?php
$choosen = $sanitizer->text($input->get->delpage);
include ("./head.inc");
include ("./buchhaltungNavigation.php");
?>
<div class="row">
<div class="span12">
<hr />
<?php
$success_message = "<h3 class='alert alert-success'>Gelöscht</h3>";
$success = false; // we assume it and set to true if form sent
$error = false;
// set and sanitize our form field values
$form = array(
'delpage' => $sanitizer->text($input->post->delpage)
);
$required_fields = array(

);
// check if the form was submitted
if($input->post->submit) {
// determine if any fields were ommitted or didn't validate
foreach($required_fields as $key => $value) {
 if( trim($value) == '' ) {
	 $error_message = "<h3 class='error'>Please check that you have completed all the required fields.</h3>";
	 $error = true;
 }
}
// if no errors, delete the page
if(!$error) {
$c = $input->post->delpage;
$p = $pages->get("/buchhaltung/buchungen/")->children("title=$c");
$p->delete();
echo $success_message;
}
}
?>
<?php if(!$success) { ?>
<?php
if($error) {
 echo $error_message;
}
?>
<form action="./" method="post" id="submitform" class="">
<?php $delpage = $pages->get("/buchhaltung/buchungen/")->children("title=$choosen"); ?>
<input type="hidden" name="delpage" id="delpage" value="<?php echo $delpage; ?>" />
<input type="submit" name="submit" value="submit" class="btn btn-primary" />
</form>
<?php } else {
echo $success_message;
?>
<?php } ?>
</div>
</div>
<?php include ("./foot.inc"); ?>
Link to comment
Share on other sites

I think that the error is here:

$p = $pages->get("/buchhaltung/buchungen/")->children("title=$c");
$p->delete();

$p is a PageArray (the return value of the children() method), not a Page, and there is no delete() method on a PageArray. What I think you want is the child() method (which returns 1 page) rather than the children() method:

$c = $sanitizer->selectorValue($input->post->delpage);
$p = $pages->get("/buchhaltung/buchungen/")->child("title=$c");
if($p->id) $p->delete();

Also, you might want to use the 'name' or 'id' property rather than the title. The reason for that is that 'title' is not guaranteed to be unique, whereas 'id' is guaranteed to be unique system-wide, and 'name' is guaranteed to be unique for all children of a given parent.

$name = $sanitizer->pageName($input->post->delpage);
if(strlen($name)) {
 $p = $pages->get("/buchhaltung/buchungen/")->child("name=$name");
 if($p->id) $p->delete();
}
  • Like 2
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...