mpmont / ci-toolkit
查看自动加载、通知库和辅助工具
Requires
- almasaeed2010/adminlte: ~3.0
- elephpant/breadcrumb: ^1.1
Suggests
- PHP 7.2: Required to use Codeigniter 4 Framework
- benedmunds/codeigniter-ion-auth: So you can use the authentication features provided
- pwrsrg/codeigniter4-cart-module: In case you're building a store, add this to your project to get cart functionality
Replaces
This package is auto-updated.
Last update: 2024-09-19 22:48:50 UTC
README
一套为CodeIgniter 4提供的库和辅助工具
Composer安装
这样您应该在终端运行以下命令。
composer require mpmont/ci-toolkit dev-master
或者将以下内容添加到您的composer.json文件中。
{
"require": {
"mpmont/ci-toolkit": "dev-master"
}
}
依赖关系
- elephpant/breadcrumb 面包屑库
- almasaeed2010/adminlte Admin LTE模板
建议的依赖关系
IonAuth
作为一个认证系统,我建议使用Ion Auth。要将其添加到您的项目中,只需在项目中运行以下命令。
$ composer config minimum-stability dev
$ composer config repositories.ionAuth vcs git@github.com:benedmunds/CodeIgniter-Ion-Auth.git
$ composer require benedmunds/CodeIgniter-Ion-Auth:4.x-dev
Ion Auth的文档可以在这里找到。
pwrsrg/codeigniter4-cart-module
如果您正在构建商店并需要一个购物车模块,只需将其添加到您的composer.json中即可。
$ composer require pwrsrg/codeigniter4-cart-module
文档可以在这里找到。
基础控制器
codeigniter-base-controller是一个扩展的BaseController类,用于在您的CodeIgniter应用程序中使用。任何继承自BaseController的控制器都获得智能视图自动加载和布局支持。它强烈遵循约定优于配置的理念,优先考虑简单性和一致性,而不是配置和复杂性。
用法
如果您通过composer安装此软件包,那么控制器应使用不同的命名空间。在这种情况下,继承自基础控制器的控制器应扩展到\Toolkit\Controllers\BaseController,如下所示
<?php namespace App\Controllers;
class Home extends \Toolkit\Controllers\BaseController
{
/**
* No view loading here!
*/
public function index()
{
}
}
视图和布局
视图将根据当前控制器和操作名称自动加载。在$this->data中设置的任何变量将通过视图和布局传递。默认情况下,类将在app/views/controller/action.php中查找视图。
为了防止自动渲染视图,请将$this->view设置为false。
$this->view = false;
或者,为了加载一个不同于自动猜测的视图
$this->view = 'some_path/some_view.php';
视图将加载到布局中。类将查找app/views/layouts/backend.php布局文件或app/views/layouts/application.php,具体取决于是否是baseController或adminController。
如果您想在自己的控制器中覆盖这一点,只需将布局设置为任何您想要的。
$this->layout = 'layouts/yourlayout.php'
为了指定在布局中输出视图的位置,渲染后的视图将存储在$yield变量中
<h1>Header</h1>
<div id="page">
<?php echo $this->renderSection('yield') ?>
</div>
<p>Footer</p>
如果您希望完全禁用布局并仅显示视图(这是一种特别适用于AJAX请求的技术),则可以将$this->layout设置为FALSE。
$this->layout = FALSE;
与$this->view一样,$this->layout也可以用于指定非传统的布局文件
$this->layout = 'layouts/mobile.php';
在$this->data中设置的任何变量将通过视图和布局文件传递。
视图结构
您的视图应创建以支持CodeIgniter 4内置的布局功能
<?php echo $this->extend($layout); ?>
<?php echo $this->section('yield') ?>
<h1>Hello World from the home/index view!</h1>
<?php echo $this->endSection() ?>
至于布局,那些应该有一个名为yield的渲染部分。
<!doctype html>
<html>
<head>
<title>My Layout</title>
</head>
<body>
This is my layout content
<?php echo $this->renderSection('yield') ?>
</body>
</html>
为了实际上能够直接渲染视图而不使用布局,我们需要一个空的布局进行渲染。为此,在您的Views/layouts文件夹中包含了一个nolayout.php文件,它只执行视图渲染。
<?php echo $this->renderSection('yield') ?>
现在项目的完整文件夹结构已包含在项目中。
在控制器中加载辅助工具
如果您想在全局范围内加载控制器中的助手而不在函数内,您只需要将助手属性声明为数组,包含所有助手,如下所示
<?php namespace App\Controllers;
class Home extends AdminController
{
protected $helpers = ['url'];
public function index()
{
}
}
此工具包提供了一些您可以在应用程序中使用的助手。对于这些,您应该使用声明了命名空间的助手函数。
public function index()
{
helper('\Toolkit\calc');
echo convertToPercent(1, 34, 2);
// output 2.94
}
使用提供的AdminLTE模板
要在项目中使用adminLTE,您首先应在public文件夹内创建一个名为backend的文件夹。
$ cd public
$ mkdir backend
然后,在您的composer.json文件中的scripts部分添加以下行
"scripts": {
"post-update-cmd": [
"cp -R vendor/almasaeed2010/adminlte/dist/ public/backend",
"cp -R vendor/almasaeed2010/adminlte/plugins/ public/backend"
]
},
您可以根据项目结构更改文件夹。
使用登录视图
要加载提供的登录视图,您不应使用布局,因为这个视图没有布局。要做到这一点,您可以在控制器中如此加载
public function login() {
$this->layout = false;
$this->view = '\Toolkit\Views\login/index';
}
这将使用提供的类似以下的登录视图
此视图依赖于表单助手,因此您必须在控制器中设置它。
protected $helpers = ['form'];
使用提供的Admin模板
提供了一个简单的admin模板,您可以使用它来构建后端应用程序。要在控制器或继承自提供的基控制器的基控制器中使用此模板,只需设置一个指向特定视图的新布局。
要在控制器中这样做,只需设置具有此属性
protected $layout = '\Toolkit\Views\layouts/backend';
admin模板的默认外观如下所示
您可以通过创建一个继承自toolkit\Backend的配置类来配置admin模板的外观
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Backend extends \Toolkit\Config\Backend
{
public $colors = [
'sidebarBG' => '#343a40', // Change the sidebar color
'sidebarLink' => '#c2c7d0', // Change the sidebar link color
];
public $siteName = 'CI - Toolkit'; // Change sitename
public $logoutControllerMethod = '#'; // Change logout link
public $brandLink = '#'; // Set a brand link relative to the app like /home/index
public $brand = 'CI - Tookit'; // Set the brand name
public $copyrightLeft = 'All rights reserved'; // Your copyright info Left
public $copyrightRight = null; // Your copyright info right
public $breadcrumb = false; // Want to use breadcrumbs
public $assetsPath = 'backend'; // Set your base folder in your assets structrure, should be the same folder you set on your composer file
// A list of all the assets you're using in your backend application, just add more here to add your custom css and js
public $css = [
'/plugins/fontawesome-free/css/all.min.css',
'https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.cs',
'/dist/css/adminlte.min.css',
'https://fonts.googleapis.ac.cn/css?family=Source+Sans+Pro:300,400,400i,700',
];
public $js = [
'/plugins/jquery/jquery.min.js',
'/plugins/bootstrap/js/bootstrap.bundle.min.js',
'/dist/js/adminlte.min.js',
];
// Your navigation up to 2 levels deap
public $navigation = [
[
'name' => 'Link 1',
'link' => '#',
'icon' => 'fas fa-circle nav-icon',
],
];
}
如果您决定使用将使用elephpant/breadcrumb的面包屑导航,请查阅其文档以使用面包屑。
如果您需要一个两层级的菜单结构,应按如下方式设置
public $navigation = [
[
'name' => 'Link 1',
'link' => '#',
'icon' => 'fas fa-circle nav-icon',
'childs' => [
[
'name' => 'Link 1.1',
'link' => '#',
'icon' => 'fas fa-circle nav-icon',
],
[
'name' => 'Link 1.2',
'link' => '#',
'icon' => 'fas fa-circle nav-icon',
],
[
'name' => 'Link 1.3',
'link' => '#',
'icon' => 'fas fa-circle nav-icon',
],
],
],
];
通知库
发送电子邮件是几乎所有应用程序的核心功能,因此,为了不必反复重复发送电子邮件的代码,我创建了一个小型库来帮助您。
要设置配置,只需将提供的代码从/config/Notification.php复制到您的app/Config/Notification.php,并不要忘记更改命名空间。
class Notification extends BaseConfig
{
public $settings = [
'mailtype' => 'html',
'protocol' => 'smtp',
'smtp_host' => '',
'smtp_user' => '',
'smtp_pass' => '',
'smtp_port' => '587',
'smtp_timeout' => '15',
];
public $from = [
'email' => 'noreply@site.com',
'name' => 'noreply',
];
public $bcc = '';
}
然后,要使用此库,就像这样简单
$notification = new \Toolkit\Libraries\Notification();
$data = [
'to' => 'destionation@email.com',
'subject' => 'Your subject',
'message' => 'Your message, this can be a view too',
];
$notification->send($data);
工具包中的提供助手
此工具包提供了一套可以在应用程序中使用的助手,这可能是此项目增长最快的部分之一。
数组助手
加载数组助手
helper('\Toolkit\array');
数组展平
将多维数组转换为单维数组。
$newArray = array_flatten($array);
数组平均值
返回数字数组中的平均值。
$avgArray = avg_array($array);
Calc助手
加载Calc助手
helper('\Toolkit\calc');
转换为百分比
根据另一个值获取百分比值。示例:1是34的多少百分比?
$slice = 1;
$cake = 34;
echo convertToPercent($slice, $cake);
// Output 3
但是还有一个可以设置的第三个参数,它提供了四舍五入的值,如下所示
$slice = 1;
$cake = 34;
echo convertToPercent(1, 34, 2);
// output 2.94
Calc逆转换
假设您需要计算逆值中的百分比。因此,您的最高分是0,最低分是200。值越接近0,百分比越高。如果值高于200,则0是您的得分。
$maxScore = 0;
$minScore = 200;
$score 100;
echo calcInverted($maxScore, $minScore, $score);
// outputs 100
日期助手
加载日期助手
helper('\Toolkit\date');
将日期转换为新的格式
$date = '20-10-2020';
$format = 'Y-m-d H:i:s';
echo validateDate($date, $format)
// Outputs 20-10-2020 00:00:00
错误助手
加载错误助手
helper('\Toolkit\error');
显示404错误
show_404();
字符串助手
加载字符串助手
helper('\Toolkit\string');
获取随机字符串
echo getRandomString(10);
// Outputs a random string with lenght of 10
将字符串从拉丁字符翻译为相应的非拉丁字符
因此,基本上所有如:Áãà的字符都将转换为“a”。这在处理URL并希望从URL中删除这些字符时非常有用。
$string = 'Cão';
echo transliterateString($string);
// outputs "Cao"
十进制数字
这将把任何整数转换为十进制。所以3可以是3.00,甚至3.000
echo decimal_number(3, 2);
// Outputs 3.00
向上取整和向下取整一个值
echo round_up(4.5, 3);
// Output 5.000
echo round_down(4.5, 3);
// Output 4.000