/** * Action to view a given post * * This action should only be called via GET * * The expected HTTP parameters are: * <ul> * <li>id: Id of the post (via HTTP GET)</li> * </ul> * * The views are: * <ul> * <li>posts/view: If post is successfully loaded (via include). Includes these view variables:</li> * <ul> * <li>post: The current Post retrieved</li> * <li>comment: The current Comment instance, empty or * being added (but not validated)</li> * </ul> * </ul> * * @throws Exception If no such post of the given id is found * @return void * */ public function view() { if (!isset($_GET["id"])) { throw new Exception("id is mandatory"); } $postid = $_GET["id"]; // find the Post object in the database $post = $this->postMapper->findByIdWithComments($postid); if ($post == NULL) { throw new Exception("no such post with id: " . $postid); } // put the Post object to the view $this->view->setVariable("post", $post); // check if comment is already on the view (for example as flash variable) // if not, put an empty Comment for the view $comment = $this->view->getVariable("comment"); $this->view->setVariable("comment", $comment == NULL ? new Comment() : $comment); // render the view (/view/posts/view.php) $this->view->render("posts", "view"); }