-
Notifications
You must be signed in to change notification settings - Fork 4
Crud
AlexFloppy edited this page Jan 28, 2015
·
12 revisions
Implemented default CRUD functionality such as view/create/edit/delete entity.
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;
}
}