Delete.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Controller\Adminhtml\Page;
  7. use Magento\Framework\App\Action\HttpPostActionInterface;
  8. /**
  9. * Delete CMS page action.
  10. */
  11. class Delete extends \Magento\Backend\App\Action implements HttpPostActionInterface
  12. {
  13. /**
  14. * Authorization level of a basic admin session
  15. *
  16. * @see _isAllowed()
  17. */
  18. const ADMIN_RESOURCE = 'Magento_Cms::page_delete';
  19. /**
  20. * Delete action
  21. *
  22. * @return \Magento\Backend\Model\View\Result\Redirect
  23. */
  24. public function execute()
  25. {
  26. // check if we know what should be deleted
  27. $id = $this->getRequest()->getParam('page_id');
  28. /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
  29. $resultRedirect = $this->resultRedirectFactory->create();
  30. if ($id) {
  31. $title = "";
  32. try {
  33. // init model and delete
  34. $model = $this->_objectManager->create(\Magento\Cms\Model\Page::class);
  35. $model->load($id);
  36. $title = $model->getTitle();
  37. $model->delete();
  38. // display success message
  39. $this->messageManager->addSuccessMessage(__('The page has been deleted.'));
  40. // go to grid
  41. $this->_eventManager->dispatch('adminhtml_cmspage_on_delete', [
  42. 'title' => $title,
  43. 'status' => 'success'
  44. ]);
  45. return $resultRedirect->setPath('*/*/');
  46. } catch (\Exception $e) {
  47. $this->_eventManager->dispatch(
  48. 'adminhtml_cmspage_on_delete',
  49. ['title' => $title, 'status' => 'fail']
  50. );
  51. // display error message
  52. $this->messageManager->addErrorMessage($e->getMessage());
  53. // go back to edit form
  54. return $resultRedirect->setPath('*/*/edit', ['page_id' => $id]);
  55. }
  56. }
  57. // display error message
  58. $this->messageManager->addErrorMessage(__('We can\'t find a page to delete.'));
  59. // go to grid
  60. return $resultRedirect->setPath('*/*/');
  61. }
  62. }