Skip to content
AlexFloppy edited this page Jan 28, 2015 · 12 revisions

Description

Implemented default CRUD functionality such as view/create/edit/delete entity.

Usage

Your class must extends AbstractCrudController . The following methods must be implemented:

  • getEntity() - return entity
  • indexAction() - return ViewModel with grid for entity
  • getCreateForm() - set form for create action
  • getEditForm() - set form for edit action

Example of CRUD implementation in module Pages:

use Pages\Grid\Grid;
use Fury\Mvc\Controller\AbstractCrudController;
use Zend\View\Model\ViewModel;
use Pages\Form\Create;
use Pages\Entity\Pages;

/**
 * Class ManagementController
 * @package Pages\Controller
 */
class ManagementController extends AbstractCrudController
{
    /**
     * @return mixed|\Pages\Entity\Pages
     */
    protected function getEntity()
    {
        /**
         * @var $entity = \Pages\Entity\Pages $entity
         */
        $entity = new Pages();
        // set authorId to entity
        $entity->setAuthorId($this->identity()->getUser()->getId());
        return $entity;
    }

    /**
     * @return mixed|Create
     */
    protected function getCreateForm()
    {
        return new Create(null, ['serviceLocator' => $this->getServiceLocator()]);
    }

    /**
     * @return mixed|Create
     */
    protected function getEditForm()
    {
        $form = new Create(null, ['serviceLocator' => $this->getServiceLocator()]);
        // set custom name for submit button
        $form->get('submit')->setValue('Save');
        return $form;
    }

    /**
     * @return array|ViewModel
     */
    public function indexAction()
    {
        $sm = $this->getServiceLocator();
        $grid = new Grid($sm);
        $viewModel = new ViewModel(['grid' => $grid]);
        // disable layout if xml request 
        $viewModel->setTerminal($this->getRequest()->isXmlHttpRequest());
        return $viewModel;
    }
}

Clone this wiki locally