Pckg Documentation
Pckg Documentation
  • About
  • Concept
  • Start
  • Deployment
  • Tests
  • Ecosystem
    • Docker images
    • Skeleton
  • Core packages
    • Auth
    • Cache
    • Collection
    • Concept
    • Database
      • Repository
        • Driver
      • Entity
        • Relations
        • Query
      • Record
        • Fields
        • Model
      • Events
      • Extensions
    • Framework
      • Environment
        • Console
        • Development
        • Production
        • Test
      • Application
      • Providers
      • Config
      • Router
      • Request
      • Response
      • Controller
        • Middleware
        • Afterware
      • View
      • Events
      • Exception
    • Generic
      • Dynamic
      • Generic
      • Maestro
    • Htmlbuilder
      • Elements
        • Form
        • Fields
      • Datasources
      • Validators
      • Decorators
    • Locale
    • Mail
      • Drivers
      • Template
      • Mail
    • Manager
      • Asset manager
      • SEO manager
      • Meta manager
      • Upload manager
      • Vue manager
      • Job manager
      • Locale manager
      • Page manager
    • Migrator
      • Migrations
      • Fields
    • Queue
      • Driver
      • Publisher
      • Subscriber
    • Storage
      • Driver
      • Media
    • Translator
  • More packages
    • API
    • HTTP QL
      • Read
      • Write
      • Uploads
    • Task
      • Async
    • Websocket
      • Server
      • Client
  • Frontend
    • Helpers JS
    • Helpers CSS
  • Extras
    • Parser
    • Payment
    • Tenant
Powered by GitBook
On this page

Was this helpful?

  1. Core packages
  2. Framework

Controller

Actions

Each actions is prefixed with request method and suffixed with Action. For example, when user makes GET request on foo action, getFooAction() is called.

All dependencies are automatically injected using constructor and method injections.

Below is an example of a standard controller providing CRUD actions.

<?php

namespace Vendor\Domain\Controller;

use Vendor\Domain\Record\User;
use Vendor\Domain\Entity\Users;
use Vendor\Domain\Form\CreateUser;
use Vendor\Domain\Form\UpdateUser;
use Vendor\Domain\Form\PatchUser;

class MyController
{
    public function getIndexAction()
    {
        return [
            'users' => (new Users())->all(),
        ];
    }

    public function postIndexAction(CreateUser $createUser)
    {
        $user = new User();
        $createUser->populateToRecord($user);

        return [
            'user' => $user->save(),
        ];
    }

    public function getOneAction(User $user)
    {
        return [
            'user' => $user,
        ];
    }

    public function postOneAction(User $user, UpdateUser $updateUser)
    {
        $updateUser->populateToRecord($user);

        return [
            'user' => $user->save(),
        ];
    }

    public function patchOneAction(User $user, UpdateUser $updateUser)
    {
        $updateUser->populateToRecord($user);

        return [
            'user' => $user->save(),
        ];
    }

    public function deleteOneAction(User $user)
    {
        return [
            'deleted' => $user->delete(),
        ];
    }
}
PreviousResponseNextMiddleware

Last updated 9 months ago

Was this helpful?