ac-developers / eloquent-url-presenter
为您的 eloquent 模型创建 URL 展示器的简单方法。
Requires
- php: ^7.1.0
- illuminate/config: ~5.0
- illuminate/support: ~5.0
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
特性,您将自动获得所有资源路由方法,包括 index
、create
、show
、edit
、store
、update
和 destroy
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许可证。