izica / relations-widgets-for-backpack
Widgets for preview model relations in laravel backpack
Installs: 22 111
Dependents: 0
Suggesters: 0
Security: 0
Stars: 29
Watchers: 4
Forks: 14
Open Issues: 1
Language:Blade
pkg:composer/izica/relations-widgets-for-backpack
Requires
- backpack/crud: ^4.0|^4.1.0|^5.0|^6.0
README
3.0 Whats new:
- relation_table search input
- relation_table create button with relation attribute reference
- relation_table pagination
Installation
composer require izica/relations-widgets-for-backpack
Screenshots
Features
- use widgets for showing relations in show operation
- show or hide panels or fields by conditions
- build field value by closure
- use dot orm notation for accessing relation fields
Documentation
- 
relation_panel - name- name of relation
- label- panel label
- backpack_crud- backpack crud url,
- buttons(optional) - set- falseto hide all action buttons
- button_show(optional) - set- falseto hide
- button_edit(optional) - set- falseto hide
- visible(optional) - closure for hiding or showing panel
- fields(optional) - fields array, by default get columns from- fillablein model- name- name
- label- for field
- closure- use closure instead of name field,
- visible(optional) - closure for hiding or showing panel
 
 
- 
relation_table - name- (required) name of relation
- label- panel label
- relation_attribute- (optional) used for passing url parameter name for button_create
- search- (optional)- closure, enables search input
- per_page- (optional) enables pagination,- nullby default
- backpack_crud- backpack crud url,
- buttons(optional) - set- falseto hide all action buttons
- button_create(optional) - set- falseto hide
- button_show(optional) - set- falseto hide
- button_edit(optional) - set- falseto hide
- button_delete(optional) - set- falseto hide
- visible(optional) -- closurefor hiding or showing panel
- columns(optional) - columns- array, by default get columns from- fillablein model- name- name
- label- for field
- closure- use- closureinstead of name field for passing value,
 
 
Usage
Relation panel
belongsTo, hasOne
use Backpack\CRUD\app\Library\Widget; protected function setupShowOperation() { Widget::add([ 'type' => 'relation_panel', 'name' => 'account_contact', 'label' => 'Account contact info', 'backpack_crud' => 'accountcontact', 'visible' => function($entry){ return $entry->is_public_person; }, 'buttons' => false, 'fields' => [ [ 'label' => 'Birthdate', 'closure' => function($entry){ return date('d.M.Y', $entry->birthdate); } ], [ 'label' => 'Contact phone', 'name' => 'contact_phone', ], [ 'label' => 'Contact email', 'name' => 'contact_email', ], [ 'label' => 'Address', 'name' => 'address.name', 'visible' => function($entry){ return !!$entry->address; } ], ], ])->to('after_content'); }
Relation table
hasMany
protected function setupShowOperation() { Widget::add([ 'type' => 'relation_table', 'name' => 'order_cargos', 'label' => 'Order cargo list', 'backpack_crud' => 'ordercargo', 'visible' => function($entry){ return $entry->order_cargos->count() > 0; }, 'search' => function ($query, $search) { return $query->where('name', 'like', "%{$search}%"); }, 'relation_attribute' => 'order_id', 'button_create' => true, 'button_delete' => false, 'columns' => [ [ 'label' => 'Type', 'name' => 'order_cargo_type.name', ], [ 'label' => 'Weight', 'name' => 'weight', ], [ 'label' => 'Value, $', 'closure' => function($entry){ return "{$entry->value}$"; } ], ], ])->to('after_content'); }
How to enable creating related model
You need to set:
- button_create=>- true
- relation_attribute=>- attribute_name
Next you need to add to relation/select field default value:
CRUD::addField([ 'type' => "relationship", 'name' => 'order', 'default' => $_GET['order_id'] ?? null ]);


