improvit/laravel-url-rewrites

在您的Laravel应用程序中轻松实现URL重写

dev-master 2024-02-12 18:08 UTC

This package is not auto-updated.

Last update: 2024-09-24 20:33:26 UTC


README

Latest Version on Packagist Software License Build Status Quality Score StyleCI Total Downloads

非常容易使用的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])

测试

  1. .env.example复制到.env并填写您的数据库凭据。
  2. 运行composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何安全相关的问题,请通过电子邮件ruthger.idema@gmail.com报告,而不是使用问题跟踪器。

鸣谢

特别感谢Spatie及其指南和包作为灵感

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件