Phalcon - 类别管理
index.phtml
<?php echo $this->getContent(); ?> <div align = "right"> <?php echo \Phalcon\Tag::linkTo(array("categories/new", "Create Categories", "class" => "btn")) ?> </div> <div align = "center"> <h1>Search categories</h1> <?php echo \Phalcon\Tag::form(array("categories/search", "autocomplete" => "off")) ?> <table align = "center"> <tr> <td align = "right"> <label for = "id">Id</label> </td> <td align = "left"> <?php echo \Phalcon\Tag::textField(array("id", "type" => "numeric")) ?> </td> </tr> <tr> <td align = "right"> <label for = "name">Name</label> </td> <td align = "left"> <?php echo \Phalcon\Tag::textField(array("name", "size" => 30)) ?> </td> </tr> <tr> <td align = "right"> <label for = "slug">Slug</label> </td> <td align = "left"> <?php echo \Phalcon\Tag::textField(array("slug", "size" => 30)) ?> </td> </tr> <tr> <td></td> <td><?php echo \Phalcon\Tag::submitButton(array("Search", "class" => "btn")) ?></td> </tr> </table> </div>
Edit.phtml
<?php use Phalcon\Tag as Tag; ?> <?php echo $this->getContent(); ?> <?php echo \Phalcon\Tag::form("categories/save") ?> <table width = "100%"> <tr> <td align = "left"><?php echo Tag::linkTo(array("categories", "Back", "class" => "btn")) ?></td> <td align = "right"><?php echo Tag::submitButton(array("Save", "class" => "btn")) ?></td> <tr> </table> <div align = "center"> <h1>Edit categories</h1> </div> <table align = "center"> <tr> <td align = "right"> <label for = "name">Name</label> </td> <td align = "left"> <?php echo Tag::textField(array("name", "size" => 30)) ?> </td> </tr> <tr> <td align = "right"> <label for = "slug">Slug</label> </td> <td align = "left"> <?php echo Tag::textField(array("slug", "size" => 30)) ?> </td> </tr> </table>
Search.phtml
<?php $this->getContent(); ?> <table width = "100%"> <tr> <td align = "left"> <?php echo \Phalcon\Tag::linkTo(array("categories/index", "Go Back", "class" => "btn")); ?> </td> <td align = "right"> <?php echo \Phalcon\Tag::linkTo(array("categories/new", "Create a Category", "class" => "btn")); ?> </td> <tr> </table> <table class = "browse table" align = "center" width = "60%"> <thead> <tr> <th>Id</th> <th>Name</th> <th>Slug</th> </tr> </thead> <tbody> <?php if(isset($page->items)) { foreach($page->items as $categories) { ?> <tr> <td> <?php echo $categories->id ?> </td> <td> <?php echo $categories->name ?> </td> <td> <?php echo $categories->slug ?> </td> <td> <?php echo \Phalcon\Tag::linkTo(array("categories/edit/".$categories->id, "Edit")); ?> </td> <td> <?php echo \Phalcon\Tag::linkTo(array("categories/delete/".$categories->id, "Delete")); ?> </td> </tr> <?php } } ?> </tbody> </table> <div class = "pagination" align = "center"> <ul> <li><?php echo \Phalcon\Tag::linkTo("categories/search", "First") ?></li> <li><?php echo \Phalcon\Tag::linkTo("categories/search?page = ".$page>before, "Previous") ?></li> <li><?php echo \Phalcon\Tag::linkTo("categories/search?page = ".$page>next, "Next") ?></li> <li><?php echo \Phalcon\Tag::linkTo("categories/search?page = ".$page>last, "Last") ?></li> </ul> </div>
Business logic is developed in CategoriesController which includes methods for creating, editing, and searching the categories.
<?php use \Phalcon\Tag as Tag, \Phalcon\Mvc\Model\Criteria; class CategoriesController extends ControllerBase { public function indexAction() { $this->session->conditions = null; } public function searchAction() { $numberPage = 1; if ($this->request->isPost()) { $query = Criteria::fromInput($this->di, "Categories", $_POST); $this->session->conditions = $query->getConditions(); } else { $numberPage = $this->request->getQuery("page", "int"); if ($numberPage <= 0) { $numberPage = 1; } } $parameters = array(); if ($this->session->conditions) { $parameters["conditions"] = $this->session->conditions; } // $parameters["order"] = "id"; $categories = Categories::find($parameters); if (count($categories) == 0) { $this->flash->notice("The search did not find any categories"); return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } $paginator = new \Phalcon\Paginator\Adapter\Model(array( "data" => $categories, "limit"=> 10, "page" => $numberPage )); $page = $paginator->getPaginate(); $this->view->setVar("page", $page); } public function newAction() { } public function editAction($id) { $request = $this->request; if (!$request->isPost()) { $categories = Categories::findFirst(array( 'id = :id:', 'bind' => array('id' => $id) )); if (!$categories) { $this->flash->error("The category was not found"); return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } $this->view->setVar("id", $categories->id); Tag::displayTo("id", $categories->id); Tag::displayTo("name", $categories->name); Tag::displayTo("slug", $categories->slug); } } public function createAction() { if (!$this->request->isPost()) { return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } $categories = new Categories(); $categories->id = $this->request->getPost("id"); $categories->name = $this->request->getPost("name"); $categories->slug = $this->request->getPost("slug"); if (!$categories->save()) { foreach ($categories->getMessages() as $message) { $this->flash->error((string) $message); } return $this->dispatcher->forward(array( "controller" => "categories", "action" => "new" )); } else { $this->flash->success("The category was created successfully"); return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } } public function saveAction() { if (!$this->request->isPost()) { return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } $category = Categories::findFirst(array( 'id = :id:', 'bind' => array('id' => $this->request->getPost("id")) )); if (!$category) { $this->flash->error("The category does not exist"); return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } $categories->id = $this->request->getPost("id"); $categories->name = $this->request->getPost("name"); $categories->slug = $this->request->getPost("slug"); if (!$categories->save()) { foreach ($categories->getMessages() as $message) { $this->flash->error((string) $message); } return $this->dispatcher->forward(array( "controller" => "categories", "action" => "edit", "params" => array($categories->id) )); } else { $this->flash->success("categories was updated successfully"); return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } } public function deleteAction($id) { $categories = Categories::findFirst(array( 'id = :id:', 'bind' => array('id' => $id) )); if (!$categories) { $this->flash->error("The category was not found"); return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } if (!$categories->delete()) { foreach ($categories->getMessages() as $message) { $this->flash->error((string) $message); } return $this->dispatcher->forward(array( "controller" => "categories", "action" => "search" )); } else { $this->flash->success("The category was deleted"); return $this->dispatcher->forward(array( "controller" => "categories", "action" => "index" )); } } }
上述代码产生以下输出。
类别列表将显示如下屏幕截图所示。
phalcon_scaffolding_application.html