如何在 SocialEngine 模块中包含外部文件
How to include external files in a SocialEngine module
我创建了一个名为 MyAwesomeModule 的 SocialEngine 模块,它向现有的 SocialEngine 注册过程添加了一个注册步骤。它在 application/modules/Myawesomemodule
。除了该目录中的文件外,它还依赖于其他文件,例如几个专门为此模块创建并放置在 application/modules/User
中。我遇到的问题是,当我在 http://example.com/install/sdk/build
中为这个模块构建一个包时,它只包含驻留在模块目录本身中的文件。该模块工作所需的其他文件以及需要复制到外部目录 (application/modules/User
) 的文件未包含在包中。
我尝试在包信息文件中添加外部文件列表,即 application/packages/module-myawesomemodule-4.0.0.json
在构建包之前,如下所示:
"application\/modules\/User": {
"type": "directory",
"path": "application\/modules\/User",
"structure": [
{
"path": "Plugin\/Signup\/Phone.php",
"dir": false,
"file": true,
"perms": "0644",
"size": 0,
"sha1": null
},
{
"path": "Form\/Signup\/Phone.php",
"dir": false,
"file": true,
"perms": "0644",
"size": 0,
"sha1": null
},
{
"path": "controllers\/PhoneController.php",
"dir": false,
"file": true,
"perms": "0644",
"size": 0,
"sha1": null
}
]
}
但是,上面片段中命名的外部文件在构建时不会复制到包中。另外,我在 JSON 文件中命名的外部文件似乎在安装后在目标包中消失了。
我怎么解决这个问题?
多亏了this SocialEngine Community post,这比我想象的要容易得多。
将您想要的每个文件添加到包中所需要做的就是将其包含在模块的 manifest.php 文件中。因此:
return array(
'package' =>
array(
'type' => 'module',
'name' => 'advancedsmsplugin',
'version' => '4.0.0',
'sku' => 'com.company.sms',
'path' => 'application/modules/Advancedsmsplugin',
'title' => 'Advanced SMS Plugin',
'description' => 'Advanced SMS Plugin',
'author' => 'Company Ltd.',
'callback' =>
array(
'class' => 'Engine_Package_Installer_Module',
),
'actions' =>
array(
0 => 'install',
1 => 'upgrade',
2 => 'refresh',
3 => 'enable',
4 => 'disable',
),
'directories' =>
array(
0 => 'application/modules/Advancedsmsplugin',
),
'files' =>
array(
0 => 'application/languages/en/advancedsmsplugin.csv',
1 => 'application/modules/User/Form/Signup/Phone.php',
2 => 'application/modules/User/Plugin/Signup/Phone.php',
3 => 'application/testpackage.html'
),
),
);
?>
我创建了一个名为 MyAwesomeModule 的 SocialEngine 模块,它向现有的 SocialEngine 注册过程添加了一个注册步骤。它在 application/modules/Myawesomemodule
。除了该目录中的文件外,它还依赖于其他文件,例如几个专门为此模块创建并放置在 application/modules/User
中。我遇到的问题是,当我在 http://example.com/install/sdk/build
中为这个模块构建一个包时,它只包含驻留在模块目录本身中的文件。该模块工作所需的其他文件以及需要复制到外部目录 (application/modules/User
) 的文件未包含在包中。
我尝试在包信息文件中添加外部文件列表,即 application/packages/module-myawesomemodule-4.0.0.json
在构建包之前,如下所示:
"application\/modules\/User": {
"type": "directory",
"path": "application\/modules\/User",
"structure": [
{
"path": "Plugin\/Signup\/Phone.php",
"dir": false,
"file": true,
"perms": "0644",
"size": 0,
"sha1": null
},
{
"path": "Form\/Signup\/Phone.php",
"dir": false,
"file": true,
"perms": "0644",
"size": 0,
"sha1": null
},
{
"path": "controllers\/PhoneController.php",
"dir": false,
"file": true,
"perms": "0644",
"size": 0,
"sha1": null
}
]
}
但是,上面片段中命名的外部文件在构建时不会复制到包中。另外,我在 JSON 文件中命名的外部文件似乎在安装后在目标包中消失了。 我怎么解决这个问题?
多亏了this SocialEngine Community post,这比我想象的要容易得多。
将您想要的每个文件添加到包中所需要做的就是将其包含在模块的 manifest.php 文件中。因此:
return array(
'package' =>
array(
'type' => 'module',
'name' => 'advancedsmsplugin',
'version' => '4.0.0',
'sku' => 'com.company.sms',
'path' => 'application/modules/Advancedsmsplugin',
'title' => 'Advanced SMS Plugin',
'description' => 'Advanced SMS Plugin',
'author' => 'Company Ltd.',
'callback' =>
array(
'class' => 'Engine_Package_Installer_Module',
),
'actions' =>
array(
0 => 'install',
1 => 'upgrade',
2 => 'refresh',
3 => 'enable',
4 => 'disable',
),
'directories' =>
array(
0 => 'application/modules/Advancedsmsplugin',
),
'files' =>
array(
0 => 'application/languages/en/advancedsmsplugin.csv',
1 => 'application/modules/User/Form/Signup/Phone.php',
2 => 'application/modules/User/Plugin/Signup/Phone.php',
3 => 'application/testpackage.html'
),
),
);
?>