我正在为 prefex CRM 创建一个模块。这个模块要做的事情非常简单,但很快就会变得超出我的预期。请允许我解释一下我在做什么以及我陷入困境的地方。希望有人能给点建议。
管理员视图
客户视图
这就是我想要实现的目标。为了更好地理解 Prefex CRM 模块的结构,我解构了 Prefex CRM 员工聊天模块。在这种情况下,很难将苹果与橙子进行比较,但它确实帮助我开发了如下文件结构:
-assets
--css
--js
--module_includes
-controllers
--admin_controller
--client_controller
-models
-uploads
-views
--admin_view
--client_view
mail.php
index.php
install.php
现在您已经了解了我在做什么,这就是我需要帮助的地方 -
我陷入困境:我希望回收 Prefex CRM 中已内置的文件上传功能。文件正常存放的位置就可以,不需要更改。我不确定如何重用这些内置函数来创建 Mail_ClientsController.php 和 Mail_Controller.php,以及 mail_admin_view.php 和 mail_clients_view.php 上的一些不确定
任何人都可以分享一些 Perfex 工作模块的示例,以阐明如何连接这些模块吗?
mail.php页面
<?php
/**
* Ensures that the module init file can't be accessed directly, only within the application.
*/
defined('BASEPATH') or exit('No direct script access allowed');
/*
Module Name: Mail
Description: Client online mailbox module for Perfex CRM system
Version: 2.3.0
Requires at least: 2.3.*
*/
define('BSSI_MAIL_MODULE_NAME', 'bssi_mail');
define('BSSI_MAIL_MODULE_UPLOAD_FOLDER', module_dir_path(BSSI_MAIL_MODULE_NAME, 'uploads'));
$CI = &get_instance();
/**
* Register the activation
*/
register_activation_hook(BSSI_MAIL_MODULE_NAME, 'bssi_mail_activation_hook');
/**
* The activation function
*/
function bssi_mail_activation_hook()
{
require(__DIR__ . '/install.php');
}
/**
* Register new menu item in admin sidebar menu
*/
if (staff_can('view', BSSI_MAIL_MODULE_NAME)) {
if (get_option('bssi_staff_can_delete_messages') == '1') {
$CI->app_menu->add_sidebar_menu_item('bssi_mail', [
'name' => 'BSSI Mail',
'href' => admin_url('bssi_mail/mail_admin_view'),
'icon' => 'fa fa-envelope',
'position' => 6,
]);
}
}
Mail_ClientsController.php(不确定将哪些函数放在这里用于上传功能)
<?php defined('BASEPATH') or exit('No direct script access allowed');
class Prchat_ClientsController extends ClientsController
{
}
Mail_Clients_View.php
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<div class="bssiClient">
<div class="container">
<div class="row">
<div class="col">
<table class="bssiMailTable">
<thead>
<th>Mail Image</th>
<th>Date Received</th>
<th>Actions</th>
</thead>
<tr>
<td>Image Query</td>
<td>Get Date Query</td>
<td>Action Items</td>
</tr>
</table>
</div>
</div>
</div>
</div>
Mail_admin_view.php
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<div class="bssiAdmin">
<div class="container">
<div class="row">
<div class="col">
<table class="bssiAdminMailTable">
<thead>
<th>Mail Image</th>
<th>Date Received</th>
<th>Actions</th>
</thead>
<tr>
<td>Image Query</td>
<td>Get Date Query</td>
<td>Action Items</td>
</tr>
</table>
</div>
</div>
</div>
</div>
因此,在您的控制器/模型中,您需要在构造方法中加载标准电子邮件模型。 Perfex 有一个用于分发电子邮件的标准模型(可以在 root > application > models > Emails_model.php 下看到)
$this->load->model('emails_model');
或者如果它是从管理控制器外部调用的(例如通过 cron)
$this->ci->load->model('emails_model');
在标准 Emails_model.php 中有一个函数“send_simple_email()”,它允许您直接从 Perfex 向任何电子邮件地址发送电子邮件
EG
$email = '[email protected]';
$subject = 'Email Subject';
$message = 'Your Message';
$this->ci->emails_model->send_simple_email($email, $subject, $message);
对于文件上传,您应该查看 Perfex 中的标准文件上传程序(查看 upload_helper.php 内部,您会发现许多可以帮助您上传文件的函数。
首先我想说的是理解架构。 文档: 查看Perfex CRM提供的官方文档。它应该包含有关模块创建、挂钩和自定义选项的详细信息。 创建模块文件夹: 首先在 Perfex CRM 的模块目录中为您的模块创建一个新文件夹。 模块结构: 在模块文件夹中,创建必要的子文件夹,例如控制器、模型、视图以及对模块有意义的任何其他文件夹。 创建一个 installer.php 和你的模块名称.php 它将帮助你安装你的模块。