sparkouttech / laravel-url-rewrites
在 Laravel 应用中轻松实现 URL 重写
Requires
- php: ^8.1
- laravel/framework: *
Requires (Dev)
- orchestra/testbench: ~3.8.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-19 13:05:52 UTC
README
非常容易使用的 URL 重写包。按照说明操作,一切就绪!
您可以在我的 Github 上找到一个示例项目: 查看示例项目 此示例项目包括以下内容
- Eloquent 监听器以自动添加 URL 重写
- 特质的用法
- 一些用例
需求
此包需要 Laravel 8 或更高版本,PHP 8.1 或更高版本,以及支持 json 字段和函数的数据库,如 MySQL 5.7 或更高版本。
安装
您可以通过 composer 安装此包
composer require sparkouttech/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 了解详细信息。
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。