This website requires JavaScript.

    Laravel Admin

    No coding is required to have powerful Laravel Admin panel, you only need to Doctrine mappings. Once a new entity is created, it is automatically managed in the Laravel Admin and available in RESTful services.

    Login to Laravel Admin and try it yourself. This site did not carry out any additional programming of the administrative part. Only three entities were created and filled with fake data. The graphical interface is completely dynamic. Dynamic menu, links, grid, forms and form inputs. Doctrine mapping provides us with all the information we need. We know the names of the fields, their types, length and required filling. And that's enough. Based on this information, we can decide what type of input to display in the form and how to display it in the grid. And our conversion of class names allows us to create unique URLs for controllers. In addition, the validation rules written in the model, together with the transactions, ensure data integrity.

    Dynamic grid

    Orm Backend builds grid dynamically. Based on information about entity fields, it dynamically builds columns and displays their content depending on the entity field type. Depending on the user's permissions for the current entity, a column with actions available to this user is displayed on the right side of the grid. And also the grid can build and display links to associative records and collections. Which Orm Backend opens in a new browser window.

    Dynamic forms

    Orm Backend offers the following single and composite input fields:

    • id Primary key
    • text Short string
    • textarea Long string
    • number Integer and float
    • bitmask Integer (adapter required)
    • checkbox Boolean
    • radio OrmBackend\DBAL\Types\ EnumType
    • date OrmBackend\DBAL\Types\ CarbonDate
    • datetime OrmBackend\DBAL\Types\ CarbonDateTime
    • time OrmBackend\DBAL\Types\ CarbonTime
    • reference To-One association
    • collection To-Many associative collection
    • image OrmBackend\Types\ImageType
    • file OrmBackend\Types\FileType

    Searching by nested criteria

    No hard code. All form inputs are generated dynamically.

    Laravel Admin exclusive search capabilities

    Creating your own Laravel Admin module

    View

    First, if you only need to change the HTML, you may not need to create a new module. ORM Backend provides the ability to override the view. This can be done by configuration.

    // admin.php
    'views' => [
        'app-model-role' => [
            'edit' => 'ormbackend::admin.role.edit',
            'create' => 'ormbackend::admin.role.create'
        ],
        'orm_backend-oauth-entities-client' => [
            'create' => 'oauth::client.create'
        ],
    ]
    

    Adapter

    Next, you can use an adapter to define your logic for CRUD. To do this, you need to inherit the OrmBackend\Admin\Controllers\ AdminControllerAdapter abstract class.

    // OrmBackend\Admin\Controllers\AdminControllerAdapter
    /**
      *
      * @param \Illuminate\Http\Request $request
      * @param  string $classUrlName
      * @param string $group
      * @return \Illuminate\Contracts\Support\Responsable
      */
    abstract public function search(Request $request, string $classUrlName, string $group);
    
    /**
      *
      * @param \Illuminate\Http\Request $request
      * @param  string $classUrlName
      * @param string $group
      * @return \Illuminate\Contracts\Support\Responsable
      */
    abstract public function trash(Request $request, string $classUrlName, string $group);
    
    /**
      *
      * @param \Illuminate\Http\Request $request
      * @param \OrmBackend\ORM\Entities\Entity $entity
      * @param string $group
      * @return \Illuminate\Contracts\Support\Responsable
      */
    abstract public function details(Request $request, Entity $entity, string $group);
    
    /**
      *
      * @param \Illuminate\Http\Request $request
      * @param \OrmBackend\ORM\Entities\Entity $entity
      * @param string $group
      * @return \Illuminate\Contracts\Support\Responsable
      */
    abstract public function edit(Request $request, Entity $entity, string $group);
    
    /**
      *
      * @param \Illuminate\Http\Request $request
      * @param  string $classUrlName
      * @param string $group
      * @return \Illuminate\Contracts\Support\Responsable
      */
    abstract public function create(Request $request, string $classUrlName, string $group);
    
    /**
      *
      * @param \Illuminate\Http\Request $request
      * @param  string $classUrlName
      * @param mixed $id
      * @param string $group
      * @return \Illuminate\Contracts\Support\Responsable
      */
    abstract public function update(Request $request, string $classUrlName, $id, string $group);
    
    /**
      *
      * @param \Illuminate\Http\Request $request
      * @param  string $classUrlName
      * @param string $group
      * @return \Illuminate\Contracts\Support\Responsable
      */
    abstract public function store(Request $request, string $classUrlName, string $group);
    
    /**
      *
      * @param \Illuminate\Http\Request $request
      * @param  string $classUrlName
      * @param mixed $id
      * @param string $group
      * @return \Illuminate\Contracts\Support\Responsable
      */
    abstract public function delete(Request $request, string $classUrlName, $id, string $group);
    

    And add your implementation to the configuration

    // admin.php
    'adapters' => [
        'app-model-role' => OrmBackend\Admin\Adapters\RoleAdapter::class,
        'app-model-user' => OrmBackend\Admin\Adapters\UserAdapter::class,
        'app-model-image' => OrmBackend\Admin\Adapters\ImageAdapter::class,
    ],
    

    Custom page

    Finally, you can add to menu a link to your custom page using the OrmBackend\Web\Events\BeforMenu event. If you want your page to look the same as the rest of Laravel Admin pages, do not forget to inherit the layout.

    
    @extends('ormbackend::admin.layout')
    @section('ormbackend::content')
      

    You custom content here

    @endsection