alvarofpp/expand-request

此包已被废弃,不再维护。未建议替代包。

一个使操作请求变得容易的包及更多

1.1.1 2020-05-23 20:55 UTC

This package is auto-updated.

Last update: 2024-02-27 19:55:34 UTC


README

Packagist Version License

一个使操作请求变得容易的包及更多。

内容

安装

通过composer安装

composer require alvarofpp/expand-request

用法

此包目前包含

  • 检查请求URL是否属于某个模式。
  • 添加要验证的URL参数。
    • 重命名URL参数。
  • 移除多余的参数。

检查当前请求URL是否属于某个模式

您可以使用这些方法检查请求URL是否属于URL模式或路由模式:

  • is_url($patterns, $request = null)
  • is_route($patterns, $request = null)

默认情况下,$request是当前请求。

示例:您可以使用此功能激活菜单中的类,例如

<li class="nav-item ">
    <a class="{{ is_route('courses.index') ? 'open' : '' }}" href="{{route('courses.index')}}">
        <span class="item-name">Show courses</span>
    </a>
</li>

这些方法接受一个数组作为第一个参数,因此您可以检查各种模式

<li class="nav-item ">
    <a class="{{ is_route(['courses.index', 'contents.index',]) ? 'open' : '' }}" href="{{route('courses.index')}}">
        <span class="item-name">Show courses</span>
    </a>
</li>

另一个示例是您可以使用它来检查用户来自哪里

<?php
// ...
$previousUrl = app('request')->create(url()->previous());
if (is_url('courses/create', $previousUrl)) {
    // Do something...
}

UrlParameters

在FormRequest中添加要验证的URL参数。在您的FormRequest中使用UrlParameters特质,例如

<?php
namespace App\Http\Requests\Course;

use Alvarofpp\ExpandRequest\Traits\UrlParameters;
use Illuminate\Foundation\Http\FormRequest;

class ShowRequest extends FormRequest
{
    use UrlParameters;
    // ...
}

如果您的URL是 [GET] /courses/{course},您可以在 $rules 中验证参数 course

<?php
// ...
public function rules()
{
    return [
        'course' => ['required', 'exists:courses,id',],
    ];
}
// ...

重命名URL参数

如果您想重命名参数,只需声明变量 $renameUrlParameters。示例:您有一个URL /courses/{course}/contents/{content}/videos/{video},您可以使用

<?php
namespace App\Http\Requests\Course;

use Alvarofpp\ExpandRequest\Traits\UrlParameters;
use Illuminate\Foundation\Http\FormRequest;

class ShowRequest extends FormRequest
{
    use UrlParameters;
    
    protected $renameUrlParameters = [
        'course_id',
        'content_id',
        'video_id',
    ];

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'course_id' => ['required', 'exists:courses,id',],
            'content_id' => ['required', 'exists:contents,id',],
            'video_id' => ['required', 'exists:videos,id',],
        ];
    }
    // ...
}

在数组中声明索引以决定哪个参数将更改

<?php
// ...
protected $renameUrlParameters = [
    0 => 'course_id',
    // 1 => 'content_id',
    2 => 'video_id',
];
// ...

移除多余的参数

在您的FormRequest中使用RemoveExtraParameters特质来移除多余的参数

<?php
namespace App\Http\Requests\Course;

use Alvarofpp\ExpandRequest\Traits\RemoveExtraParameters;
use Illuminate\Foundation\Http\FormRequest;

class ShowRequest extends FormRequest
{
    use RemoveExtraParameters;
    // ...
}

此特质使用$accept属性。默认情况下,$accept中的值是rules()attributes()中存在的键的合并。您可以在FormRequest中指定$accept来指定哪些字段被接受。

<?php
namespace App\Http\Requests\Course;

use Alvarofpp\ExpandRequest\Traits\RemoveExtraParameters;
use Illuminate\Foundation\Http\FormRequest;

class ShowRequest extends FormRequest
{
    use RemoveExtraParameters;
    
    protected $accept = [
        'field_1', 'field_2',
    ];
    // ...
}

在这个例子中,如果您收到一个如{"field_1": 50, "field_2": 100, "extra_field": 1}的请求,那么extra_field将被从该请求中移除。

贡献

欢迎贡献。Fork、改进并提交pull request。对于错误、改进想法或其他问题,请创建一个问题