bigfoot / core-bundle
Bigfoot core bundle
Installs: 14 266
Dependents: 11
Suggesters: 0
Security: 0
Stars: 1
Watchers: 15
Forks: 5
Open Issues: 1
Type:symfony-bundle
Requires
- php: >=5.4
- friendsofsymfony/jsrouting-bundle: ~1.1
- knplabs/knp-menu-bundle: 2.0.*@dev
- knplabs/knp-paginator-bundle: ~2.4.1
- liip/imagine-bundle: ~0.6
- symfony/framework-bundle: ~2.5
- dev-master / 4.0.x-dev
- 3.0.x-dev
- 2.2.x-dev
- 2.2.2
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.0
- 1.0.1
- 1.0.0
- dev-feature-traductions-spreadsheet
- dev-fix-translation
- dev-form-by-tab
- dev-fix-insights
- dev-translatable-label-validation
- dev-filter-by-date
- dev-undeprecatization
- dev-feat-translations
- dev-bigfoot_labels
- dev-add-date-filter
- dev-add-getActionUrl
- dev-add-generateEnvUrl
- dev-configurable_dashboard
This package is auto-updated.
Last update: 2024-10-29 04:09:19 UTC
README
This is the core bundle for the Bigfoot administration interface. Provides core features and helpers to integrate BackOffice features through bundles.
Installation
Use composer :
php composer.phar require bigfoot/core-bundle
Register the bundle in your app/AppKernel.php file :
$bundles = array(
...
new Bigfoot\Bundle\CoreBundle\BigfootCoreBundle(),
...
);
Usage
The administration interface is then available at /admin. For now, it does nothing. Add Bigfoot bundles or create your own to really get started !
How to create a widget
Create a class extends Bigfoot\Bundle\CoreBundle\Model\AbstractWidget
.
Define in your new class the method 'renderContent()'. This method must return html code of your widget.
Add a record in widget_backoffice table with corresponding values : name : Fullname of your class title : Title display in widget header, this field is translatable
Add 2 records in widget_backoffice_parameter table. One with these values : name: order value: Order number you want for your widget widget_id: Record ID of your widget in widget_backoffice table user_id: (Optionnal) If defined, this parameter will be used only for this user
Another with these values : name: width value: number of columns use by your widget widget_id: Record ID of your widget in widget_backoffice table user_id: (Optionnal) If defined, this parameter will be used only for this user
How to overload Symfony Router
Add these following lines to your front config:
bigfoot_core: routing: replace_symfony_router: true routers_by_id: router.default : 300 bigfoot_core.router: 400
BigfootFile annotation :
BigfootFile uses symfony's file upload system with its 2 properties for one file.
@Bigfoot\Bundle\CoreBundle\Annotation\Bigfoot\File : apply this annotation on the property that represents the form field. Use its filePathProperty option (required) to connect the other property.
Don't forget to create an "updated" field, and to update it before flushing with a PreFlush listener. Otherwise the file won't update if you don't change anything else in the form.
Exemple :
<?php namespace Entity; use Doctrine\ORM\Mapping as ORM; use Bigfoot\Bundle\CoreBundle\Annotation\Bigfoot; /** * @ORM\Table(name="items") * @ORM\HasLifecycleCallbacks() */ class Item { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * @ORM\Column(name="path", type="string", length=255, nullable=true) */ private $path /** * @Assert\File(maxSize="6000000") * @Bigfoot\File(filePathProperty="path") */ public $file; /** * @var string * @ORM\Column(name="updated", type="datetime", nullable=true) */ private $updated; /** * @ORM\PreFlush() */ public function refreshUpdated() { if ($this->file) { $this->updated = new \DateTime("now"); } } }
Use it in your Form :
class ItemType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('file', 'bigfoot_file', array( 'required' => false, 'label' => 'Your file', 'filePathProperty' => 'path', 'deleteRoute' => 'entity_delete_file' )); } }
If you don't define any deleteRoute, the deleteLink won't appear
Get the file in front :
The second parameter(default false) defines whether or not the filter returns an absolute path
{{ item|bigfoot_file('path', false) }}
Generate a csv in Crud Index page :
Add the method getCsvFields into your extended CrudController controller:
protected function getCsvFields() { return array( 'name' => array( 'label' => 'Name' ), 'region.name' => array( 'label' => 'Region', ), 'services.codeDetail' => array( 'label' => 'Services', 'multiple' => true ) ); }
If you want to display a field of your entity, use:
protected function getCsvFields() { return array( 'name' => array( 'label' => 'Name' ), ....
If you want to display a field of an external entity, use:
protected function getCsvFields() { return array( 'region.name' => array( 'label' => 'Region' ), .... );
If you want to display a field of OneToMany relation, use:
protected function getCsvFields() { return array( 'services.codeDetail' => array( 'label' => 'Services', 'multiple' => true ) .... );
Improve the speed of your 'Edit forms' by setting a form by tab:
Add the method getFormTypes into your extended CrudController controller which return an array compound of arrays of 'label' (labels of tabs) and 'form', names of the FormType services.
protected function getFormTypes() { return array( array( 'label' => 'Hotel', // Label of the first tab 'form' => 'rc_hotel_0' // Service name of the HotelType ), array( 'label' => 'Rooms', // Label of the second tab 'form' => 'rc_hotel_1' // Service name of the RoomsType ) ); }
Make sure you added an index parameter to your editAction of your controller:
public function editAction(Request $request, $id, $index = null) { return $this->doEdit($request, $id, $index); }
That's it!