ac-developers/eloquent-url-presenter

为您的 eloquent 模型创建 URL 展示器的简单方法。

v0.2.1 2019-04-16 09:55 UTC

This package is auto-updated.

Last update: 2024-09-16 21:59:20 UTC


README

这是一个简单的展示器,类似于 Laracast Presenter,但专门针对 Laravel 中的 URL 展示进行了定制,这是根据 laravel-news.com 上由 Jordan Dalton 撰写的一篇文章的建议。

1.1. 设置

1.1.1. 在 Lumen 5.x 和 Laravel 5.x 上的安装。

将 Laravel Form Processor 包添加到您的 composer.json 文件中。

composer require ac-developers/eloquent-url-presenter

自动发现: Laravel Form Processor 支持 Laravel 5.5 及更高版本的 自动发现

1.1.2. 在 Lumen 和 Laravel 5.4 及以下版本上的安装。

1.1.2.1. 服务提供者

在您的应用程序配置中,将 EloquentUrlPresenterServiceProvider 添加到提供者数组中。

'providers' => [
    AcDevelopers\EloquentUrlPresenter\EloquentUrlPresenterServiceProvider::class,
    ];

对于 Lumen,将提供者添加到您的 bootstrap/app.php 文件中。

$app->register(AcDevelopers\EloquentUrlPresenter\EloquentUrlPresenterServiceProvider::class);

1.1.3. 发布配置文件。

要发布配置文件到 config/eloquent-url-presenter.php,运行

php artisan vendor:publish --provider="AcDevelopers\EloquentUrlPresenter\EloquentUrlPresenterServiceProvider"

1.1.4. 配置生成过程的路径

要更改生成的 URL 展示器的保存路径,您需要配置它们的命名空间在配置文件 config/ac-developers/eloquent-url-presenter.php 中。


return [
    /*
    |--------------------------------------------------------------------------
    | Default namespaces for the classes
    |--------------------------------------------------------------------------
    */
    'namespaces' => [
        'presenter'   => 'App\Presenters\Url',
        'model'        => 'App\\',
    ],
];

完成以上步骤后,您就可以开始使用了。

1.2. 使用

1.2.1. 创建 URL 展示器

创建 URL 展示器类就像创建任何其他 PHP 类一样简单,只需几个步骤就可以使其成为可展示的 URL。在我们的例子中,我们将创建一个 UserUrlPresenter 类。

首先,它继承自我们的 EloquentUrlPresenterClass。然后,您将使用构造函数传递要使用新创建的 URL 展示器的 Eloquent 模型,如下所示

/**
 * UserUrlPresenter constructor.
 *
 * @param \App\User $user
 */
public function __construct(User $user)
{
    parent::__construct($user);

    //
}

然后创建返回所需 URL 的方法。


/**
 * Get the show url for this user
 *
 * @return string
 */
public function show()
{
    return url('show/{user}', ['slug' => $this->entity])
}

如果您的应用程序使用 Laravel 或 Lumen,并且您想使此展示器资源化而无需逐个手动添加方法,只需将 HasResource 特性添加到 UrlPresenter 并实现 route 方法即可,该方法应返回与在 Route::resouce 方法中传递的第一个参数相似的字符串,并实现 parameter 方法,该方法的操作与您期望的完全一致。

因此,如果您的路由方法看起来像 Route::resource('users', 'UserController'),则 UserUrlPresenter 中实现的 route 方法应返回 users,否则 Laravel 将抛出异常。

接下来是准备我们的模型以使用 URL 展示器。

1.2.1. 准备模型以使用 URL 展示器

准备将使用 URL 展示器的模型很简单,只需使用 EloquentUrlPresentableTrait 并实现 urlPresenter 方法,该方法将返回我们的 UserUrlPresenter 类

/**
 * Prepare a new or cached url presenter instance
 *
 * @return mixed
*/
public function urlPresenter()
{
    return UserUrlPresenter::class;
}

接下来,我们将 "url" 添加到我们的 appends 属性数组中,如下所示

/**
 * The accessors to append to the model's array form.
 *
 * @var array
 */
protected $appends = ['url'];

接下来,您将 url 作为数组值添加到模型的 appends 属性中,然后完成。

现在在我们的代码中,我们可以像这样链接到用户模型的展示页面

$user->url->show

假设您使用的是 HasResource 特性,您将自动获得所有资源路由方法,包括 indexcreateshoweditstoreupdatedestroy

1.3. Laravel URL 展示器命令

**注意:这仅适用于 Laravel 和 Lumen 应用程序**

当然,之前叙述的步骤是为了向您展示如何自己完成。您可以跳过这一部分,直接运行php artisan generate:urlPresenter命令。例如,要创建我们的UserUrlPresenter,可以这样操作

php artisan generate:urlPresenter UserUrlPresenter --model=User

要创建一个资源URL展示器,您只需在生成URL展示器时传递resources选项,而不需要指定值,如下所示

php artisan generate:urlPresenter UserUrlPresenter --model=User --resource

1.3. 安全漏洞

如果您在Laravel表单处理程序中发现安全漏洞,请通过电子邮件发送给Anitche Chisom,邮箱地址为anitchec.dev@gmail.com。所有安全漏洞都将得到及时处理。

1.4. 许可证

Eloquent URL展示器是开源软件,采用MIT许可证。