dev-master
9999999-devA catch-all controller (for Laravel).
The Requires
The Development Requires
by Mark Johnson
v1.0
1.0.0.0A catch-all controller (for Laravel).
The Requires
The Development Requires
by Mark Johnson
Wallogit.com
2017 © Pedro Peláez
A catch-all controller (for Laravel).
A catch-all controller (for Laravel), (*1)
composer require marklj/funnel
Marklj\Funnel\FunnelServiceProvider to your app.php service provider configuration values.php artisan vendor:publish
Send a POST request to /mailbox. You can do this with AJAX from your front-end library of choice (Angular / Vue / etc), but for simplicity, we'll use a simple HTML form example., (*2)
The default Funnel endpoint is /mailbox, but this can be configured in the funnel.php configuration file that was published in the installation section., (*3)
The command request parameter is required and is automatically converted to StudlyCase when processed by Funnel., (*4)
<form action="/mailbox" method="POST">
<input type="hidden" name="command" value="post_blog" />
<input type="text" name="payload[blog_title]" />
<button>Submit</button>
</form>
Note that data does not need to be contained in a payload[] array unless you want to filter exactly what perameters are passed to your action. If you do not namespace your inputs, like name="blog_title", all of your input data will be passed to your action., (*5)
Funnel will try to associate the StudlyCase command, in this case PostBlog, to an action. This association is made in the funnel.php configuration file., (*6)
// config/funnel.php
[
// ...
'action_mappings' => [
'PostBlog' => \App\Blog\Actions\PostAction::class,
// other mappings here
]
]
The action class must implement the Marklj\Funnel\Actionalble interface. You are free to place whatever code you need here., (*7)
All of your payload data data will be available in the ActionPayload object., (*8)
<?php namespace App\Blog\Actions;
use Marklj\Funnel\Actionable;
use Marklj\Funnel\ActionPayload;
class PostAction implements Actionable
{
public function __invoke(ActionPayload $payload) {
print 'Hello Funnel!';
print 'Blog Post Title: ' . $payload->get('blog_title');
}
}
Since the action is instantiated using Laravel's IoC container, you are free to inject any dependancies into your action via the constructor., (*9)
A catch-all controller (for Laravel).
A catch-all controller (for Laravel).