te7a-houdini / response-generate
it will add generate:response command to help you in scaffolding response classes
Requires
- php: >=7.0
- illuminate/console: 5.5.*
This package is auto-updated.
Last update: 2024-10-29 05:28:21 UTC
README
This package allows you to generate a class that implements Responsable Interface
Installation
it can be used in Laravel 5.5 or higher
You can install the package via composer:
composer require te7a-houdini/response-generate
In Laravel 5.5 the service provider will automatically get registered. so you don't have to register the provider in config/app.php
Usage
php artisan generate:response ExampleResponse
you will find a new class created under App\Http\Responses
namespace which will look like
namespace App\Http\Responses; use Illuminate\Contracts\Support\Responsable; class ExampleResponse implements Responsable { /** * Create an HTTP response that represents the object. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function toResponse($request) { } }
Example
lets say in your controller you are doing something like that
public function show($id) { $post = Post::find($id); if (request()->ajax) { return response()->json(['data' => $post]); } else { return view('posts.show',compact('post')); } }
by using the new generated response class we can do that
public function show($id) { $post = Post::find($id); return new PostResponse($post); }
class PostResponse implements Responsable { protected $post; public function __construct ($post) { $this->post = $post; } /** * Create an HTTP response that represents the object. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function toResponse($request) { if ($request->ajax()) { return response()->json(['data' => $this->post]); } else { return view('posts.show',$post); } } }
Credits
Resources
License
The MIT License (MIT). Please see License File for more information.