pwweb/laravel-core

此包已被弃用,不再维护。未建议替换包。

Laravel的额外核心功能


README

Version Downloads Scrutinizer Code Quality License: MIT

核心:为Laravel提供的额外核心功能,包括本地化功能:C3P0 for Laravel。查看contributing.md了解待办事项列表。

安装

通过Composer运行以下命令:

# Install the package.
$ composer require pwweb/laravel-core

# Publish config, migration, languages and controllers.
$ php artisan vendor:publish --provider="PWWEB\Core\CoreServiceProvider"

# Run migrations
$ php artisan migrate

先决条件

如果需要使用捆绑的默认控制器,则假定此包使用标准的Laravel安装。捆绑的控制器从App\Http\Controllers\Controller扩展。如果使用其他自定义基础控制器,请参阅自定义

配置

自定义

该包提供以下标记以发布用于自定义的各个组件

标记 描述
pwweb.core.config 发布配置文件以调整数据库表名等。
pwweb.core.migrations 发布迁移文件以对数据库表进行更改。
pwweb.core.language 发布语言文件以调整翻译字符串。
pwweb.core.views 发布视图文件以调整视图的整体结构。

扩展模型

可以通过扩展模型来添加额外的功能或添加与其他模型的关联。这样做时,需要导出此包的配置并相应地调整类名。

<?php

return [
    'models' => [
        'user' => Namespace\Of\My\User::class,
        ...
    ]
];

默认和后备语言

建议将您的app.php更改为同时使用ISO-639-1 ISO语言代码以及ISO-3166 ISO国家代码。这可以通过更改以下两个变量实现:

<?php

return [
    ...
    'locale' => 'en-GB',
    'fallback_locale' => 'en-GB',
    ...
];

第三方依赖项

此包依赖于几个其他包。您还应该查看它们的文档

用法

用户和人员

为了使用用户和人员模型,而不是Laravel提供的默认用户模型,需要修改auth.php配置文件如下:

<?php
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => \PWWEB\Core\Models\User::class,
    ],
],

使用Laravel Auth

如果使用默认的Laravel认证并且已发布控制器,则需要对RegisterController.php进行一些更改。

<?php
// Add the following lines.
use PWWEB\Core\Models\User;
use PWWEB\Core\Models\Person;

// Change the following two functions.
protected function validator(array $data)
{
    return Validator::make(
        $data,
        [
            'name' => ['required', 'string', 'max:255'],
            'surname' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:'.User::getTableName()],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]
    );
}

protected function create(array $data)
{
    $person = Person::create(
        [
            'name' => $data['name'],
            'surname' => $data['surname'],
        ]
    );

    $user = new User(
        [
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]
    );
    $user->person()->associate($person);
    $user->save();

    $user->assignRole('user');

    return $user;
}

地址

该包提供了一个 HasAddresses 特性,可用于使模型与地址相关联。

<?php

namespace Path\To;

use Illuminate\Database\Eloquent\Model;
use PWWEB\Core\Traits\HasAddresses;

class MyModel extends Model
{
    use HasAddresses;
}

语言切换器

本地化包提供了一个语言切换器,可以轻松添加到blade模板中,如下所示(注意:<div>仅为示例)

...
<div class="anyContainer">
    {{ Localisation::languageSelector() }}
</div>
...

GraphQL

该包提供了一个用于父项目的 graphql.schema 文件。您可以在主schema文件中包含它,如下所示

#import ../vendor/pwweb/laravel-core/graphql/schema.graphql

注意:如果您的主schema文件位于不同位置,请务必更新供应商路径。

Blade指令

@date

日期指令允许使用 Carbon\Carbon 显示和格式化日期。如果没有提供日期(即null),则不会抛出错误并返回空字符串。如果没有提供格式,则使用配置中的默认格式。

<?php
@date(Carbon\Carbon $date, string $format)

@menu

˜ 菜单指令允许根据提供的环境和根节点显示菜单。

<?php
@menu(string $environmentSlug, string $rootNodeSlug)

汇率

该包有一个exchange_rates表,可以用来保存历史汇率。为了自动更新表,提供了一个可队列的工作。这可以与Laravel的任务调度一起使用,定期更新。

<?php
use PWWEB\Core\Jobs\UpdateExchangeRates;
//...
$schedule->job(new UpdateExchangeRates, 'target_queue')->timezone('Europe/Paris')->dailyAt('16:30');
//...

注意:汇率来自欧洲中央银行,它们每天大约在CET 16:00更新汇率。因此,您应该确保任务在稍后运行以获取最新汇率。

如果您想查看文件的原始内容,可以在这里找到。

常见问题解答

在通过composer安装时,您会看到以下消息

 ErrorException  : Trying to access array offset on value of type null

  at /var/www/vendor/pwweb/core/src/CoreServiceProvider.php:107
    103|     protected function registerModelBindings()
    104|     {
    105|         $config = $this->app->config['core.models'];
    106|
  > 107|         $this->app->bind(CountryContract::class, $config['country']);
    108|         $this->app->bind(LanguageContract::class, $config['language']);
    109|         $this->app->bind(CurrencyContract::class, $config['currency']);
    110|     }
    111|

  Exception trace:

  1   Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Trying to access array offset on value of type null", "/var/www/vendor/pwweb/core/src/CoreServiceProvider.php", [])
      /var/www/vendor/pwweb/core/src/CoreServiceProvider.php:107

  2   PWWeb\Localisation\CoreServiceProvider::registerModelBindings()
      /var/www/vendor/pwweb/core/src/CoreServiceProvider.php:81

  Please use the argument -v to see more details.

这是由于运行了命令 php artisan config:cache。我们建议您删除缓存文件 bootstrap/cache/config.php,然后运行 composer dump-autoload 以确保无误。

变更日志

请查看变更日志以获取有关最近更改的更多信息。

贡献

请查看contributing.md以获取详细信息以及待办事项列表。

安全

如果您发现任何与安全相关的问题,请使用问题跟踪器

鸣谢

许可证

版权所有 © pw-websolutions.com。请参阅许可证文件以获取更多信息。