PHP code example of ysm / responsable

1. Go to this page and download the library: Download ysm/responsable library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

ysm / responsable example snippets


'providers' => [
    // Other providers
    YSM\Responsable\ResponsableServiceProvider::class,
],



namespace App\Http\Controllers;

use App\Http\Filters\PostFilter;
use App\Http\Resources\PostResource;
use App\Models\Post;
use Illuminate\Support\Facades\Response;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::filterable(PostFilter::class)->limit(5)->get();

        return Response::success(
            message: 'Posts fetched success',
            data: PostResource::collection($posts)
        );
    }
}

public function paginated()
{
    $posts = Post::filterable(PostFilter::class)->paginate(5);

    return Response::success(
        message: 'Posts fetched success',
        data: PostResource::collection($posts),
        paginator: $posts
    );
}

public function errors(Request $request)
{
    if (isset($request->case)) {
        return Response::success('Posts fetched success');
    }

    return Response::error('Posts fetched error');
}


#### Example 1: Fetching a Collection of Posts with Helpers
public function index()
{
    $posts = Post::filterable(PostFilter::class)->limit(5)->get();

    return success('Posts fetched success', PostResource::collection($posts));
}

#### Example 3: Handling JSON Errors with Helpers
public function errors(Request $request)
{
    if (isset($request->case)) {
        return success('Posts fetched success');
    }

    return error('Posts fetched error');
}

public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'created successfully', 201, ['title' => $validated['title']]);
}

responsable()->getAttributes(); // Return all response attributes
responsable()->get('type'); // 'success'
responsable()->get('message'); // 'Post created successfully'
responsable()->get('code'); // 201
responsable()->get('data'); // ['title' => 'Post Title']
responsable()->get('errors'); // []

public function update(Request $request, Post $post)
{
    $validated = $request->validate([
        'title' => ' 422, ['title' => 'Update failed']);
    }

    return redirect()->route('posts.index')->success('Post updated successfully');
}

responsable();
// Returns:
// [
//     'type' => 'error',
//     'message' => 'Failed to update post',
//     'code' => 422,
//     'data' => [],
//     'errors' => ['title' => 'Update failed']
// ]

public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'created successfully', 201, ['title' => $validated['title']], true);
}

$data = responsable();

public function show()
{
    $response = responsable();
    if ($response['type'] === 'success') {
        // Handle success
        return view('posts.index', ['message' => $response['message']]);
    }
    // Handle error
    return view('posts.index', ['error' => $response['message']]);
}

responsable_forget();

public function clear()
{
    responsable_forget();
    return redirect()->route('posts.index');
}

  Response::success(
      string $message = '',
      array|object $data = [],
      int $code = 200,
      \Illuminate\Contracts\Pagination\Paginator|\Illuminate\Pagination\LengthAwarePaginator|\Illuminate\Pagination\CursorPaginator|null $paginator = null
  ): \Illuminate\Http\JsonResponse
  

  Response::error(
      string $message = '',
      int $code = 422,
      array $errors = []
  ): \Illuminate\Http\JsonResponse
  

  redirect()->success(
      string $message = '',
      int $code = 200,
      array|object $data = [],
      bool $persist = false
  ): \Illuminate\Http\RedirectResponse
  

  redirect()->error(
      string $message = '',
      int $code = 422,
      array $errors = [],
      bool $persist = false
  ): \Illuminate\Http\RedirectResponse
  

return response()->success('Operation successful', ['data' => 'value'], 200);
blade
@php
    $response = responsable();
@endphp

@if ($response['type'])
    <div class="alert alert-{{ $response['type'] }}">
        <strong>{{ $response['message'] }}</strong>
        @if ($response['errors'])
            <ul>
                @foreach ($response['errors'] as $field => $error)
                    <li>{{ $field }}: {{ $error }}</li>
                @endforeach
            </ul>
        @endif
    </div>
@endif
blade
@if (session('response_type'))
    <div class="alert alert-{{ session('response_type') }}">
        <strong>{{ session('message') }}</strong>
        @if (session('errors'))
            <ul>
                @foreach (session('errors') as $field => $error)
                    <li>{{ $field }}: {{ $error }}</li>
                @endforeach
            </ul>
        @endif
    </div>
@endif
bash
   php artisan ide-helper:generate