You can install the package via composer:
composer require devnajjary/laravel-multiple-responderphp artisan responder:generatecreate your responder:
php artisan make:responder Mobileafter that,it make file in this paths:
App/Http/Responder/Mobile.phpWe want to have one output for each mobile, browser and SPA. What to do?🤔 first create responders like this:
php artisan make:responder SPA
php artisan make:responder Mobilenow go to your controller,Suppose your controller looks like this:
namespace App\Http\Controllers;
class YourController extends Controller
{
public function index()
{
$users = User::all();
return view('your-blade-file');
}
}Now what if we want to have Jason output for mobile?The answer is this. easily rewrite your controller:
namespace App\Http\Controllers;
use DevNajjary\laravelMultipleResponder\Facade\Responder;
class YourController extends Controller
{
public function index()
{
$users = User::all();
return Responder::showUsers($users);
}
}Now define the user method in any file you want default Responder(for browser response):
namespace App\Http\Responder;
class DefaultResponder
{
public const HEADER = 'DefaultResponder';
public function showUsers($users)
{
return view('your-blade',compact($users));
}
}App\Http\Responder\Mobile.php :
namespace App\Http\Responder;
class Mobile
{
public const HEADER = 'Mobile';
public function showUsers($users)
{
return UserResourse::collection($users);
}
}App\Http\Responder\Spa.php
namespace App\Http\Responder;
class Spa
{
public const HEADER = 'Spa';
public function showUsers($users)
{
return [
'users' => UserResourse::collection($users),
'additional-data' => 'whatever'
];
}
}The point is not to forget that you have to set a const HEADER for each Responder
All your requests from mobile or spa should be a header with 'Client' key and HEADER value;
for SPA like this:
axios.post('url', {"body":data}, {
headers: {
'Client': 'Spa'
}
}
)run this
php artisan vendor:publish --tag="responder"And go to config/responder.php change header_key to What you love.
The MIT License (MIT). Please see License File for more information.