knplabs/controller-behaviors

This package is abandoned and no longer maintained. No replacement package was suggested.

Trait based Symfony2 controllers

Package info

github.com/KnpLabs/ControllerBehaviors

Homepage

pkg:composer/knplabs/controller-behaviors

Statistics

Installs: 729

Dependents: 0

Suggesters: 0

Stars: 36

Open Issues: 1

dev-master 2015-02-11 14:59 UTC

MIT d06d02bb8c110833136196e91f8677fcb3b328f5

Symfony2behaviorsdoctrine2crud

This package is not auto-updated.

Last update: 2022-02-01 12:21:46 UTC


README

👁 Build Status

This php 5.4+ library is a collection of traits that adds behaviors to Symfony2 controllers.

It currently handles:

Usage

All you have to do is to define a Controller and use some traits.

crudable:

Crudable trait is an abstract trait used internally by ORMBehavior and ODMBehavior.

  • To use Doctrine ORM persistence in your CRUD, just use ORMBehavior like below.
  • To use Propel ORM persistence in your CRUD, just use PropelBehavior.
<?php

namespace Acme\DemoBundle\Controller;

use Knp\ControllerBehaviors\Crudable\Doctrine\ORMBehavior;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MemberController extends Controller
{
 // make aliases of actions to make them FOSRestBundle compliant

 use ORMBehavior {
 ORMBehavior::getListResponse as getMembersAction;
 ORMBehavior::getShowResponse as getMemberAction;
 ORMBehavior::getNewResponse as newMembersAction;
 ORMBehavior::getEditResponse as editMemberAction;
 ORMBehavior::getCreateResponse as postMembersAction;
 ORMBehavior::getUpdateResponse as putMemberAction;
 ORMBehavior::getDeleteResponse as deleteMemberAction;
 }
}

Form

The create, edit and update actions of Crudable
will search for a <Object>Type in the Form folder of the bundle.

In the examples below, it would be in src/Acme/DemoBundle/Form/MemberType.

To modify this behavior, just override the default implementation of the trait, like this:

<?php

 protected function createNewForm($object)
 {
 return $this->createForm('my_super_type_id', $object, ['some_option' => true]);
 }

Templates

Templates are also searched using conventions. By default it will search in the Resources\views/<ControllerName> folder of your bundle.

<ControllerName> here can be contain a subfolder (think of an Admin subfolder for example).

To modify this behavior, just override the default implementation of the trait, like this:

<?php

 protected function getViewsPathPrefix()
 {
 return '::';
 }

Filterable

Filterable behavior is a simple trait that stores and retrieves some informations for a given controller, like filter form data.

Once you posted data to postFilterMembersAction, you can retrieve it later by using the getFilters method.

It also provides a way to handle a filter form, whose type yould be defined in src/Acme/DemoBundle/Form/MemberFilterType in this example.

<?php

use Knp\ControllerBehaviors\FilterableBehavior;

class MemberController extends Controller
{
 // make aliases of actions to make them FOSRestBundle compliant

 use FilterableBehavior {
 FilterableBehavior::getFilterResponse as postFilterMembersAction;
 }


}

In order to make this filter form visible in the view, you can override default view parameters handling:

<?php

 protected function getListViewParameters(array $parameters)
 {
 return array_merge([
 'filterForm' => $this->createFilterForm()->createView(),
 ], $parameters);
 }

Paginable

Paginable behavior is a simple trait that uses Knp paginator to paginate a resultset.

<?php

use Knp\ControllerBehaviors\Paginatable\KnpPaginatorBehavior;

class MemberController extends Controller
{
 use KnpPaginatorBehavior;

 public function getObjectsToList()
 {
 return $this->paginateQueryBuilder(
 $this->getObjectRepository()->getJoinAllFilteredQB($this->getFilters()) // returns an ORM Query Builder
 );
 }
}