当在 October CMS 插件中包含 Laravel 包时,有几点需要注意。
Laravel 包通常会提供配置文件,你应该将此配置复制到你的插件目录。例如,如果文件名为 purifier.php 并且包含一些基本的配置值。
return [
'encoding' => 'UTF-8',
'finalize' => true,
'cachePath' => storage_path('app/purifier'),
'cacheFileMode' => 0755,
];将此文件复制到您的插件目录,例如,plugins/acme/blog/config/purifier.php. 务必复制并维护整个文件,因为任何缺失的键都不会从基础配置中继承.
接下来,您应该将插件配置的内容转移到 boot() 方法中的包配置。
public function boot()
{
Config::set('purifier', Config::get('acme.blog::purifier'));
}这会将所有包配置值设置为你的插件配置值。届时,以下值将相等。
Config::get('purifier.encoding') === Config::get('acme.blog::purifier.encoding');现在您可以自由提供软件包的配置值,其方式与处理常规插件配置值以及标准配置方法相同。
如果 Laravel 包包含任何服务提供者和别名,你应该手动在你的插件中注册它们使用该该 App 外观在 register() 方法中。
public function register()
{
// Register the aliases provided by the packages used by your plugin
App::registerClassAlias('Purifier', \Mews\Purifier\Facades\Purifier::class);
// Register the service providers provided by the packages used by your plugin
App::register(\Mews\Purifier\PurifierServiceProvider::class);
}与数据库交互的 Laravel 包通常会包含它们自己的数据库迁移和 Eloquent 模型。你应该将这些迁移和模型复制到你的插件目录。
务必修改模型类,使其继承基础的 October\Rain\Database\Model 类,而不是基础的 Laravel Eloquent 模型类,以利用 October CMS 中提供的扩展技术特性。
最好还将数据库表重命名,并以你的作者代码和插件名称作为前缀。 例如,一个名为 posts 的表应该被重命名为 rainlab_blog_posts。