rapyd: crud widgets for laravel. datatable, grids, forms, in a simple package

Overview

rapyd-laravel

This is a pool of presentation and editing widgets (Grids and Forms) for laravel.
Nothing to "generate", just some classes to let you develop and maintain CRUD backends in few lines of code.

Documentation: Wiki
Demo: rapyd.dev

rapyd laravel

Install in Laravel 8, 7, 6, 5.8..

require the package in your Laravel
$ composer require zofe/rapyd

then publish assets:
$ php artisan vendor:publish

and choose Zofe\Rapyd\RapydServiceProvider

how to

just go to /rapyd-demo for a bit of demos of all widgets.
Then you'll be able to populate some data (be sure that db connection env/config is valid)

A couple of minutes of your time before you start

I came from an era where there was mutual appreciation among programmers, if you use this library and benefit from it join-me on Linkedin and write a short review.
Thanks to Mihai Berende for having done it already
me@linkedin

DataSet

DataSet is a simple presenter, it build a super-collection, a pagination and orderby links. You can start from tablename, a query, a model, o just an array.

in a controller

   $set = \DataSet::source("tablename")->paginate(10)->getSet();
   
   $set = \DataSet::source(DB::table('users')->select('name', 'email'))->paginate(10)->getSet();  
                      
   $set = \DataSet::source(new Article)->paginate(10)->getSet();
   
   $set = \DataSet::source(Article::with('author'))->paginate(10)->getSet();
                       
   $set = \DataSet::source($multidimensional_array)->paginate(10)->getSet();

in a view you can just write

<p>
    //cycle
    @foreach ($set->data as $item)

        {{ $item->title }}<br />
        {{ $item->author->name }}<br />

    @endforeach
    

    //pagination
    {{ $set->links() }} <br />

    
    //sort link
    {{ $set->orderbyLink('title', 'asc') }} <br />
</p>

DataGrid

DataGrid extend DataSet to make data-grid output with few lines of fluent code.
It build a bootstrap striped table, with pagination at bottom and order-by links on table header. It support also blade syntax, filters, closures etc..

in a controller

   $grid = \DataGrid::source(Article::with('author'));  //same source types of DataSet
   
   $grid->add('title','Title', true); //field name, label, sortable
   $grid->add('author.fullname','author'); //relation.fieldname 
   $grid->add('{{ substr($body,0,20) }}...','Body'); //blade syntax with main field
   $grid->add('{{ $author->firstname }}','Author'); //blade syntax with related field
   $grid->add('body|strip_tags|substr[0,20]','Body'); //filter (similar to twig syntax)
   $grid->add('body','Body')->filter('strip_tags|substr[0,20]'); //another way to filter
   $grid->edit('/articles/edit', 'Edit','modify|delete'); //shortcut to link DataEdit actions
   
   //cell closure
   $grid->add('revision','Revision')->cell( function( $value, $row) {
        return ($value != '') ? "rev.{$value}" : "no revisions for art. {$row->id}";
   });
   
   //row closure
   $grid->row(function ($row) {
       if ($row->cell('public')->value < 1) {
           $row->cell('title')->style("color:Gray");
           $row->style("background-color:#CCFF66");
       }  
   });
   
   $grid->link('/articles/edit',"Add New", "TR");  //add button
   $grid->orderBy('article_id','desc'); //default orderby
   $grid->paginate(10); //pagination

   view('articles', compact('grid'))

in a view you can just write

  #articles.blade.php  

  {!! $grid !!} 

styling a datagrid

   ...
   $grid->add('title','Title', true)->style("width:100px"); //adding style to th
   $grid->add('body','Body')->attr("class","custom_column"); //adding class to a th
   ...
    //row and cell manipulation via closure
    $grid->row(function ($row) {
       if ($row->cell('public')->value < 1) {
           $row->cell('title')->style("color:Gray");
           $row->style("background-color:#CCFF66");
       }  
    });
    ...

datagrid supports also csv output, so it can be used as "report" tool.

   ...
   $grid->add('title','Title');
   $grid->add('body','Body')
   ...
   $grid->buildCSV();  //  force download 
   $grid->buildCSV('export_articles', 'Y-m-d.His');  // force download with custom stamp
   $grid->buildCSV('uploads/filename', 'Y-m-d');  // write on file 
    ...
    $grid->buildCSV('uploads/filename', 'Y-m-d', false); // without sanitize cells
    
    $as_excel = ['delimiter'=>',', 'enclosure'=>'"', 'line_ending'=>"\n"];  
    $grid->buildCSV('uploads/filename', 'Y-m-d', true, $as_excel); // with customizations
    

DataForm

DataForm is a form builder, you can add fields, rules and buttons.
It will build a bootstrap form, on submit it will check rules and if validation pass it'll store new entity.

   //start with empty form to create new Article
   $form = \DataForm::source(new Article);
   
   //or find a record to update some value
   $form = \DataForm::source(Article::find(1));

   //add fields to the form
   $form->add('title','Title', 'text'); //field name, label, type
   $form->add('body','Body', 'textarea')->rule('required'); //validation

   //some enhanced field (images, wysiwyg, autocomplete, maps, etc..):
   $form->add('photo','Photo', 'image')->move('uploads/images/')->preview(80,80);
   $form->add('body','Body', 'redactor'); //wysiwyg editor
   $form->add('author.name','Author','autocomplete')->search(['firstname','lastname']);
   $form->add('categories.name','Categories','tags'); //tags field
   $form->add('map','Position','map')->latlon('latitude','longitude'); //google map


   //you can also use now the smart syntax for all fields: 
   $form->text('title','Title'); //field name, label
   $form->textarea('body','Body')->rule('required'); //validation
 
   //change form orientation
   $form->attributes(['class'=>'form-inline']);
 
   ...
 
 
   $form->submit('Save');
   $form->saved(function() use ($form)
   {
        $form->message("ok record saved");
        $form->link("/another/url","Next Step");
   });

   view('article', compact('form'))
   #article.blade.php

  {!! $form !!}

DataForm explained

customize form in view

You can directly customize form using build() in your controller

    ...
    $form->build();
    view('article', compact('form'))

then in the view you can use something like this:

   #article.blade.php
    {!! $form->header !!}

        {!! $form->message !!} <br />

        @if(!$form->message)
            <div class="row">
                <div class="col-sm-4">
                     {!! $form->render('title') !!}
                </div>
                <div class="col-sm-8">
                    {!! $form->render('body') !!}
                </div>
            </div> 
            ...
        @endif

    {!! $form->footer !!}

custom form layout explained
custom form layout demo

DataEdit

DataEdit extends DataForm, it's a full CRUD application for given Entity.
It has status (create, modify, show) and actions (insert, update, delete) It detect status by simple query string semantic:

  /dataedit/uri                     empty form    to CREATE new records
  /dataedit/uri?show={record_id}    filled output to READ record (without form)
  /dataedit/uri?modify={record_id}  filled form   to UPDATE a record
  /dataedit/uri?delete={record_id}  perform   record DELETE
  ...
   //simple crud for Article entity
   $edit = \DataEdit::source(new Article);
   $edit->link("article/list","Articles", "TR")->back();
   $edit->add('title','Title', 'text')->rule('required');
   $edit->add('body','Body','textarea')->rule('required');
   $edit->add('author.name','Author','autocomplete')->search(['firstname','lastname']);
   
   //you can also use now the smart syntax for all fields: 
   $edit->textarea('title','Title'); 
   $edit->autocomplete('author.name','Author')->search(['firstname','lastname']);
   
   return $edit->view('crud', compact('edit'));
   #crud.blade.php
 
  {!! $edit !!} 

DataEdit explained

DataFilter

DataFilter extends DataForm, each field you add and each value you fill in that form is used to build a where clause (by default using 'like' operator).
It should be used in conjunction with a DataSet or DataGrid to filter results.
It also support query scopes (see eloquent documentation), closures, and a cool DeepHasScope trait see samples:

   $filter = \DataFilter::source(new Article);

   //simple like 
   $filter->add('title','Title', 'text');
          
   //simple where with exact match
   $filter->add('id', 'ID', 'text')->clause('where')->operator('=');
          
   //custom query scope, you can define the query logic in your model
   $filter->add('search','Search text', 'text')->scope('myscope');
      
   //cool deep "whereHas" (you must use DeepHasScope trait bundled on your model)
   //this can build a where on a very deep relation.field
   $filter->add('search','Search text', 'text')->scope('hasRel','relation.relation.field');
   
   //closure query scope, you can define on the fly the where
   $filter->add('search','Search text', 'text')->scope( function ($query, $value) {
         return $query->whereIn('field', ["1","3",$value]);
   })
   
   $filter->submit('search');
   $filter->reset('reset');
   
   $grid = \DataGrid::source($filter);
   $grid->add('nome','Title', true);
   $grid->add('{{ substr($body,0,20) }}...','Body');
   $grid->paginate(10);

   view('articles', compact('filter', 'grid'))
   # articles.blade
   
   {!! $filter !!}  
   {!! $grid !!}

DataFilter explained
Custom layout and custom query scope

DataTree

The DataTree extends the DataGrid, and displays sortable tree widget. It supports all the methods of the DataGrid with the exception of pagination and sorting. Another difference is you need to pass in an already loaded Baum Model, not an empty Model or Query Builder.

To use this widget you need to php composer.phar require baum/baum and make sure your model extends Baum\Node.

    // the root node won't appear, only its sub-nodes will be displayed.
    $root = Menu::find(1) or App::abort(404);

    $tree = \DataTree::source($root);
    $tree->add('title');
    $tree->edit("/menu/edit", 'Edit', 'modify|delete');
    $tree->submit('Save the order');
    return view('menu-list', compact('tree'));

Namespace consideration, Extending etc.

To use widgets you can:

  • just use the global aliases: \DataGrid::source()... (please note the '')
  • or import facades:
    use Zofe\Rapyd\Facades\DataSet;
    use Zofe\Rapyd\Facades\DataGrid;
    use Zofe\Rapyd\Facades\DataForm;
    use Zofe\Rapyd\Facades\DataForm;
    use Zofe\Rapyd\Facades\DataEdit;
    ..
    DataGrid::source()... 
  • or you can extend each class
    Class MyDataGrid extends Zofe\Rapyd\DataGrid\DataGrid {
    ...
    }
    Class MyDataEdit extends Zofe\Rapyd\DataEdit\DataEdit {
    ...
    }
    ..
    MyDataGrid::source()

Publish & override configuration and assets

You can quickly publish the configuration file (to override something) by running the following Artisan command.

$ php artisan vendor:publish  

You need also to add this to your views, to let rapyd add runtime assets:

<head>
...
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

{!! Rapyd::head() !!} 

</head>

note: widget output is in standard with Boostrap 3+, and some widget need support of JQuery 1.9+ so be sure to include dependencies as above

A better choice is to split css and javascipts and move javascript at bottom, just before body to speedup the page, you can do this with:

<head>
  ...
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
{!! Rapyd::styles() !!}
</head>
....

    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
   {!! Rapyd::scripts() !!}
</body>

In short

Rapyd use a "widget" approach to make a crud, without "generation". (this approach is worst in terms of flexibility but fast/rapid in terms of development and maintenance):

You need to "show" and "edit" record from an entity?
Ok so you need a DataGrid and DataEdit. You can build widgets where you want (even multiple widgets on same route). An easy way to work with rapyd is:

  • make a route to a controller for each entity you need to manage
  • make the controller with one method for each widget (i.e.: one for a datagrid and one for a dataedit)
  • make an empty view, include bootstrap and display content that rapyd will build for you

Rapyd comes with demo (controller, models, views) a route is defined in app/Http/rapyd.php
so go to:

/rapyd-demo

License & Contacts

Rapyd is licensed under the MIT license

Please join me and review my work on Linkedin

thanks

Comments
  • XSS Attack on URL parameters

    XSS Attack on URL parameters

    I use rapyd DataGrid on my article page. But when it is tested for QA, the team found xss vulnerability on URL parameters

    I give you example parameters that resulting in script alert on the page.

      http://10.100.92.99:8007/admin/my-articles?ord=title<script>alert("XSS can be injected");</script>
    

    the my-articles route uses Rapyd DataGrid. On Chrome the script won't run, but resulting in SQL Query error message displayed. Meanwhile, on Firefox the script will run alert and same SQL Query error message is displayed saying no column 'title' while actually the column exist.

    Please help.

    bug 
    opened by azamuddin 26
  • Add mutator for after-save URL

    Add mutator for after-save URL

    After saving a data-edit, the user lands on the view mode of the data-edit itself. It'd be nice to be able to have him land straight back to the datagrid or any other URL of choice.

    opened by tacone 20
  • Laravel 5.6 - Call to a member function make() on null

    Laravel 5.6 - Call to a member function make() on null

    Hi, I installed version 2.2 to Laravel 5.6. After first start I got error message " Call to a member function make() on null " on path vendor\zofe\rapyd\src\Rapyd.php.

    `$grid = DataGrid::source( Reminder::with('name'))->getSet(); //same source types of DataSet

        $grid->add('name','Name', true); //field name, label, sortable
        $grid->add('email','email'); //relation.fieldname
        $grid->add('{{ substr($body,0,20) }}...','Body'); //blade syntax with main field
        $grid->add('{{ $author->firstname }}','Author'); //blade syntax with related field
        $grid->add('body|strip_tags|substr[0,20]','Body'); //filter (similar to twig syntax)
        $grid->add('custom_message','Body')->filter('strip_tags|substr[0,20]'); //another way to filter
        $grid->edit('/articles/edit', 'Edit','modify|delete'); //shortcut to link DataEdit actions
        
        //cell closure
        $grid->add('revision','Revision')->cell( function( $value, $row) {
            return ($value != '') ? "rev.{$value}" : "no revisions for art. {$row->id}";
        });
            
            //row closure
            $grid->row(function ($row) {
                if ($row->cell('public')->value < 1) {
                    $row->cell('title')->style("color:Gray");
                    $row->style("background-color:#CCFF66");
                }
            });
                
                $grid->link('/articles/edit',"Add New", "TR");  //add button
                $grid->orderBy('article_id','desc'); //default orderby
                $grid->paginate(10); //pagination
                echo 'Broj'.$grid->data->toBase()->count();
        return        view('home', compact('grid'));`
    

    Could you help me?

    opened by stojan014 17
  • Same result on 2 different DataGrid after filtering

    Same result on 2 different DataGrid after filtering

    Hello, i have created 2 different DataSets with 2 different DataFiters that placed on 2 different JQuery Tabs but when i make a search with one of these DataFilters it effects both of the DataGrids. How can i fix it ? Thanks.

    opened by tartarJR 16
  • First row of the grid comes up too long

    First row of the grid comes up too long

    First row of the grid shows up like the below image when the grid is populated, i am not using any other css class or styling for the grid. I tried to use style() function to fix this but it didnt work out. What is causing that problem ? Any idea what is going on ? Any help would be appreciated.

    original

    public function createVehicleDataGrid($dataSource) {
        $searchGrid = DataGrid::source($dataSource);
        $searchGrid->add('id','Evrak No', true)->style('width:10px;');
        $searchGrid->add('model','Model', true);
        $searchGrid->add('{{@$brand->brand_name}}','Marka', true);
        $searchGrid->add('licenseplate','Plaka', true);
        $searchGrid->add('buying_date','Alış Tarihi', true);
        $searchGrid->add('{{@$seller->full_name }}','Alınan Kişi', true);
        $searchGrid->add('{{@$seller->mobile_number}}','ATEL', true);
        $searchGrid->add('buying_place','Alınan Yer', true);
        $searchGrid->add('{{@$representive->full_name}}','Ruhsat Sahibi', true);
        $searchGrid->add('buying_exchange_definition','Alış-Takas', true);
        $searchGrid->add('selling_date','Satış Tarihi', true);
        $searchGrid->add('{{@$buyer->full_name}}','Satılan Kişi', true);
        $searchGrid->add('selling_place','Satılan Yer Yer', true);
        $searchGrid->add('{{@$buyer->mobile_number}}','STEL', true);
        $searchGrid->add('selling_exchange_brand','Takas Adı', true);
        $searchGrid->add('{{@$section->section_name}}','Araç Nerede', true);
        $searchGrid->add('is_document_ready','Evrak Hazır Mı?', true);
        $searchGrid->add('is_new_document_needed','Yeni Evrak Mı?', true);
        $searchGrid->add('process_situation','İşlem Durumu', true);
        $searchGrid->add('debit_situation','Borç Durumu', true);
    
        $searchGrid->edit('/pages/aracislemler/', 'Göster','show');
        $searchGrid->paginate(7);
    
        $searchGrid->row(function ($row) {
    
           if ($row->cell('is_document_ready')->value  == 0) {
               $row->cell('is_document_ready')->value  = 'Hayır';
           }else{
               $row->cell('is_document_ready')->value  = 'Evet';
               $row->style("background-color:#CCFF66");
           }
    
           if ($row->cell('is_new_document_needed')->value  == 0) {
               $row->cell('is_new_document_needed')->value  = 'Hayır';
           }else{
               $row->cell('is_new_document_needed')->value  = 'Evet';
               $row->style("background-color:#0000FF");
           }#FF8C00
    
           if ($row->cell('process_situation')->value  == 'Satışı Yapıldı') {
               $row->style("background-color:#FFD700");
           }
    
           if ($row->cell('process_situation')->value  == 'Mülkiyetli Satışı Yapıldı') {
               $row->style("background-color:#FF8C00");
           }
    
           if ($row->cell('process_situation')->value  == 'İade') {
               $row->style("background-color:#696969");
           }
    
           if ($row->cell('debit_situation')->value  == 'Rehinli' || $row->cell('debit_situation')->value  == 'Hacizli') {
               $row->style("background-color:#B22222");
           }
        });
    
        return $searchGrid;
    }
    
    opened by tartarJR 14
  • HasOne inserts one related model per fields

    HasOne inserts one related model per fields

    I didn't have yet the time to try to reproduce it on the rapyd demo, still on my setup this code will insert 2 records in the magazine table rather than one. Update seems to work fine.

    $edit = DataEdit::source(new Article);
    $edit->add('magazine.title', 'Magazine title', 'text');
    $edit->add('magazine.number', 'Magazine number', 'text');
    
    opened by tacone 14
  • Pagination total count

    Pagination total count

    First of all, congratulations for the package, it's amazing! I have a little problem. I want to obtain in my datagrid's view the total count of pagination (total number of rows) and I don't find the solution. Could you help me? Thank you in advance and sorry for my English.

    opened by farynato 11
  • Installation issue on Linux

    Installation issue on Linux

    After installation of the project on Linux I have a message: include(/web/vendor/zofe/rapyd/src/Zofe/Rapyd/Helpers/Html.php): failed to open stream: No such file or directory going to the place: /var/www/crm.netapi.pl# cd /web/vendor/zofe/rapyd/src/Zofe/Rapyd/Helpers/ I see HTML.php which may be a problem on a Linux

    Temporary solution in my case is: mv HTML.php Html.php

    opened by slavos 11
  • Don't delete on get requests

    Don't delete on get requests

    Rapyd should not delete a record when called with this URL: http://localhost/admin/articles/edit?do_delete=4

    This is actually dangerous in case the DataEdit gets used on the frontend or any preloading method is used on the backend (InstantClick or similar stuff).

    A POST request should be used, or even better a DELETE request.

    Sample code to create a delete button in Laravel:

    {{ Form::open(array('url' => "http://localhost/admin/articles/edit?do_delete=4", 'method' => 'delete')) }}
            <button type="submit" class="btn btn-danger">Delete</button>
     {{ Form::close() }}
    

    Laravel will create a form that actually fakes a delete request (as DELETE is not supported by the browsers yet). You will be then able to know it is a delete request with this code:

    $method = Request::method();
    if (Request::isMethod('delete'))
    {
        //
    }
    
    opened by tacone 11
  • Help need to implement the DataTree

    Help need to implement the DataTree

    @tacone I tried to run Data tree in localhost (http://localhost/rapyd2/public/rapyd-demo/datatree) like show in http://www.rapyd.com/rapyd-demo/datatree here and I have installed https://github.com/etrepat/baum but getting a blank page with Documenter only. No error even, no clue to what to do. Help appreciated. Thanks.

    opened by aabir 10
  • DataGrid Introducing Filters to format cell output

    DataGrid Introducing Filters to format cell output

    some stuff like this must be implemented:

     $grid->add('body|strip_tags', 'Body');
     $grid->add('body|strip_tags|substr[0,100]', 'Body');
    
    //or with a different syntax :
     $grid->add('body', 'Body')->filter('strip_tags|substr[0,20]');
    
    //or even a closure on cell:
    $grid->add('body', 'Body')->cell( function ($cell) { 
       return substr($cell, 0, 20);  
    });
    
    

    supporting native php functions and if possible also Facades. This way we can limit some horrible blade/php syntax inline like this:

     $grid->add('ucfirst(substr( {{ $body }}, 0,100))', 'Body');
    

    Another way (currently available) is to play more with accessors, to define field formatting on models side, but in some situation does wasting more time

    ...
    $grid->add('shortbody', 'Body');
    ...
    class Article extends Eloquent
    {
      protected $appends = array('shortbody');
    ...
       public function getShortbodyAttribute($value)
        {
            return ucfirst( substr(strip_tags($this->body), 0,100) );
        }
    ...
    
    opened by zofe 10
  • rapyd  as standard livewire component library?

    rapyd as standard livewire component library?

    For the past months I have been using laravel livewire, even if it's not a standard/official laravel package yet. I think is a really good way to build dynamic interfaces and is fully component based.

    • What do you think about livewire?
    • What do you think about building datatables, forms and atomic fields as livewire components ?
    • There are already such libraries or rapyd could be rewritten (and simplified) to be a repository of livewire component?

    Let me know

    question 
    opened by zofe 0
  • How to show continuous serial number in naygest grid

    How to show continuous serial number in naygest grid

    my current code ` $grid4 = new Grid( (new GridConfig) ->setDataProvider( new EloquentDataProvider($query) ) ->setName('work_grid') ->setPageSize(10) ->setColumns([

                    (new FieldConfig)
                    ->setName('id')
                    ->setLabel('S.No.')
                    ->setSortable(true)
                    ->setCallback(function ($val, ObjectDataRow $dr) {
                        
                        static $val = 0;
                        return ++$val;
                        
                     })
                      
                    ->setSortable(true)
                    ->addFilter(
                        (new FilterConfig)
                            ->setOperator(FilterConfig::OPERATOR_LIKE)
                    )
                , `
    

    Thanks in advance..

    opened by arivu1995 0
  • Fix for orderby

    Fix for orderby

    In a previous commit, $orderby was defaulted to an empty array.

    As a result, isset() always returns true even if there is nothing in the array causing it to error on the following line when trying to access the array elements which don't exist.

    opened by Oxid3 0
Releases(2.6.3)
Owner
Felice Ostuni
Felice Ostuni
Belich Tables: a datatable package for Laravel Livewire

Belich Tables is a Laravel package base on Livewire and AlpineJS that allows you to create scaffold datatables with search, column sort, filters, pagination, etc...

Damián Aguilar 11 Aug 26, 2022
An advanced datatable component for Laravel Livewire.

Livewire Smart Table An advanced, dynamic datatable component with pagination, sorting, and searching including json data. Installation You can instal

Turan Karatuğ 87 Oct 13, 2022
Joy VoyagerDatatable module adds Yajra DataTable to Voyager.

Joy VoyagerDatatable This Laravel/Voyager module adds Yajra Async/Ajax DataTable to Voyager. By ?? Ramakant Gangwar. Prerequisites Composer Installed

Ramakant Gangwar 10 Dec 19, 2022
Widgets for Laravel

Widgets for Laravel A powerful alternative to view composers. Asynchronous widgets, reloadable widgets, console generator, caching - everything that y

Nekrasov Ilya 1.1k Dec 26, 2022
A convenient helper for using the laravel-seo package with Filament Admin and Forms

Combine the power of Laravel SEO and Filament PHP. This package is a convenient helper for using the laravel-seo package with Filament Admin and Forms

Ralph J. Smit 39 Dec 21, 2022
Twitter Bootstrap forms for Laravel 5

Twitter Bootstrap Forms for Laravel 5 Simple way to create forms View demo demo repository Custom form controls and shorthand methods for form rows (b

Dmitry Groza 15 Oct 31, 2019
BootstrapForm, forms for Laravel 5

BootstrapForm, forms for Laravel 5 This is a package for simply creating Bootstrap 3 styled form groups in Laravel 5. It extends the normal form build

Dwight Watson 217 Oct 24, 2022
Keeping Your Laravel Forms Awake.

Caffeine for Laravel Supporting This Package This is an MIT-licensed open source project with its ongoing development made possible by the support of

GeneaLabs, LLC 839 Dec 22, 2022
Fullstack komponents to write Forms, Queries and Menus in Laravel

kompo.io • Documentation • Demos • Twitter kompo/kompo kompo/kompo is a library of Fullstack Komponents to help you write forms, queries and menus in

Bass El Hachem 107 Dec 5, 2022
Provides the missing range field for the Filament forms.

The missing range field for the Filament forms. Installation You can install the package via composer: composer require yepsua/filament-range-field Pu

null 11 Sep 10, 2022
A demo of how to use filament/forms to build a user-facing Form Builder which stores fields in JSON.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Dan Harrin 41 Dec 24, 2022
Filament Plugin to help implement Cloudflare turnstile into your forms.

Filament Turnstile Filament Turnstile, is a plugin to help you implement the Cloudflare turnstile. This plugin uses Laravel Turnstile Behind the scene

Coderflex 5 Jun 12, 2023
Laravel Users | A Laravel Users CRUD Management Package

A Users Management Package that includes all necessary routes, views, models, and controllers for a user management dashboard and associated pages for managing Laravels built in user scaffolding. Built for Laravel 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6.0, 7.0 and 8.0.

Jeremy Kenedy 393 Nov 28, 2022
Laravel Package to generate CRUD Files using TALL Stack

tall-crud-generator Laravel Package to generate CRUD Files using TALL Stack Requirements Make sure that Livewire is installed properly on your project

AscSoftwares 75 Jan 2, 2023
Laravel UI, Auth, & CRUD scaffolding package using Bootstrap & Livewire.

bastinald/ux Laravel UI, Auth, & CRUD scaffolding package using Bootstrap & Livewire. Features Automatic migrations Automatic routing Automatic passwo

null 33 Nov 26, 2022
Simple CRUD + Search using Laravel 8 and Livewire 2

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

PowPow 11 Sep 29, 2022
An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel, Bootstrap, and Vue.js

Laravel Soundboard An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel 5.8, Bootstrap 4, Vue.js, Boot

Jeremy Kenedy 24 Oct 28, 2022
Laravel Livewire UI, Auth, & CRUD starter kit.

Laravel Livewire Ui This package provides Laravel Livewire & Bootstrap UI, Auth, & CRUD scaffolding commands to make your development speeds blazing f

null 97 Nov 15, 2022
Laravel 8 + CoreUI + Livewire + Datatables (CRUD)

Laravel 8 + CoreUI + Livewire + Datatables About Laravel 8 + CoreUI + Livewire Datatables Whats Inside Laravel Core UI - (https://github.com/HZ-HBO-IC

Muhammad Rheza Alfin 38 Nov 3, 2022