Package Data | |
---|---|
Maintainer Username: | marklj |
Maintainer Contact: | marklj@gmail.com (Mark Johnson) |
Package Create Date: | 2016-09-26 |
Package Last Update: | 2016-09-28 |
Home Page: | |
Language: | PHP |
License: | Unknown |
Last Refreshed: | 2025-02-05 15:01:04 |
Package Statistics | |
---|---|
Total Downloads: | 24 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 1 |
Total Watchers: | 2 |
Total Forks: | 0 |
Total Open Issues: | 0 |
A catch-all controller (for Laravel)
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.
The default Funnel endpoint is /mailbox
, but this can be configured in the funnel.php
configuration file that was published in the installation section.
The command
request parameter is required and is automatically converted to StudlyCase when processed by Funnel.
<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.
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.
// 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.
All of your payload data data will be available in the ActionPayload
object.
<?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.