ruthgeridema / laravel-url-rewrites
在 Laravel 应用程序中轻松实现 URL 重写
Requires
- php: ^7.2
- laravel/framework: *
Requires (Dev)
- orchestra/testbench: ~3.8.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-10 22:59:58 UTC
README
非常容易使用的 URL 重写包。遵循说明,一切顺利!
您可以在我的 Github 上找到一个示例项目:查看示例项目
此示例项目具有以下功能
- Eloquent 监听器以自动添加 URL 重写
- 特质的用法
- 一些用例
要求
此包需要 Laravel 5.8 或更高版本,PHP 7.2 或更高版本,以及支持 json 字段和函数的数据库,例如 MySQL 5.7 或更高版本。
安装
您可以通过 composer 安装此包
composer require ruthgeridema/laravel-url-rewrites
此包将自动注册自身。
使用 rewrites
-宏注册将显示内容的路由。
您需要将其放在路由文件的底部。
// In routes/web.php Route::rewrites();
您可以使用以下命令发布迁移
php artisan vendor:publish --provider="RuthgerIdema\UrlRewrite\ServiceProvider" --tag="migrations"
迁移发布后,您可以通过运行迁移来创建 url_rewrites
表
php artisan migrate
您可以选择使用以下命令发布配置文件
php artisan vendor:publish --provider="RuthgerIdema\UrlRewrite\ServiceProvider" --tag="config"
这是已发布配置文件的内容
<?php return [ 'table-name' => 'url_rewrites', 'repository' => \RuthgerIdema\UrlRewrite\Repositories\UrlRewriteRepository::class, 'model' => \RuthgerIdema\UrlRewrite\Entities\UrlRewrite::class, 'cache' => true, 'cache-decorator' => \RuthgerIdema\UrlRewrite\Repositories\Decorators\CachingUrlRewriteRepository::class, 'types' => [ 'product' => [ 'route' => 'product', 'attributes' => ['id'], ], 'category' => [ 'route' => 'category', 'attributes' => ['id'], ] ], ];
Laravel Nova
使用 Laravel Nova?您可以使用以下命令将 Nova 类发布到 App/Nova
php artisan vendor:publish --provider="RuthgerIdema\UrlRewrite\ServiceProvider" --tag="nova"
在不久的将来,我将发布一个具有重写 URL 重新索引等功能的 Laravel Nova 包。
用法
转发请求
假设您有一个控制器路由 'product/{id}',并且有一个产品 'Apple Airpods',其 ID 为 5。
当您访问 'apple-airpods' 时,此包将转发请求到控制器,但保持干净的 URL。
以下代码将此添加到数据库中
UrlRewrite::create('apple-airpods', 'product/5')
使用命名路由
您必须在配置中指定类型。
UrlRewrite::create('apple-airpods', null, 'product', ["id" => 5])
要重新生成目标路径,您可以
UrlRewrite::regenerateRoute($urlRewrite) UrlRewrite::regenerateAll() UrlRewrite::regenerateRoutesFromType($type)
要自动将 URL 属性添加到 Eloquent 模型,您必须在 Eloquent 模型中添加 HasUrlRewrite 特质。
您还需要添加 urlRewriteType 并可选地添加 'url' 到 appends 数组中。
use HasUrlRewrite; public $urlRewriteType = 'category'; protected $appends = ['url'];
完成此操作后,您可以通过调用 Model::find(1)->url
简单地获取模型的 URL。
重定向
301 重定向
UrlRewrite::create('apple-airpods', 'product/5', null, null, 1)
302 重定向
UrlRewrite::create('apple-airpods', 'product/5', null, null, 2)
其他功能
UrlRewrite::all() UrlRewrite::find($id) UrlRewrite::delete($id) UrlRewrite::update($data, $id) UrlRewrite::getByRequestPath('apple-airpods') UrlRewrite::getByTargetPath('product/5') UrlRewrite::getByTypeAndAttributes('product', ["id" => 5])
测试
- 将
.env.example
复制到.env
并填写您的数据库凭据。 - 运行
composer test
。
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全性
如果您发现任何安全问题,请通过电子邮件 ruthger.idema@gmail.com 报告,而不是使用问题跟踪器。
致谢
特别感谢 Spatie 及其指南和包,它们是灵感的来源
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。