improvit / laravel-url-rewrites
在您的Laravel应用程序中轻松实现URL重写
Requires
- php: ^8.1|^8.2|^8.3
- laravel/framework: *
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is not auto-updated.
Last update: 2024-09-24 20:33:26 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模型,您必须将HasUrlRewrite特质添加到Eloquent模型。
您还需要添加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)。有关更多信息,请参阅许可文件。