burakcantemizel / yii2-fdcys
Yii2 公司部门员工管理系统模块
Requires
- php: >=7.0
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- phpunit/phpunit: 8.*.*
This package is not auto-updated.
Last update: 2024-09-26 06:52:43 UTC
README
公司-部门-员工管理系统模块
By Burak Can Temizel 180202024
关于
通过此模块,您可以创建公司,为这些公司创建相关部门,并在部门下存储员工的详细信息。该模块是互联网编程课程的应用。在后面的部分将提供更详细的信息。
安装
模块安装将通过 vagrant 和 yii2-advanced 模板进行说明。首先,您需要在 vagrant 上完成 yii2-advanced 的安装。
使用 ssh 或 vagrant ssh 命令进入 vagrant 上的项目主目录。(例如 /var/www/advanced)
composer require --prefer-dist burakcantemizel/yii2-fdcys "dev-master"
使用以下命令通过 packagist 安装模块。
之后,打开项目主目录中 backend/config/main.php 文件进行编辑。按照以下方式进行编辑。
'modules' => [
...
'fdcys' => [
'class' => 'burakcantemizel\\fdcys\Module',
],
],
重要提示:这里有一个重要点,“\f”是特殊字符,因此斜杠是作为转义字符输入的,请注意这一点。
如果在使用 Composer 安装时遇到问题,您可以在项目主目录中创建 vendor/burakcantemizel 文件夹并克隆 git 仓库。
为了使模块能够运行,最后需要执行迁移操作。
在 vagrant 上通过 ssh 连接至项目主目录时,需要运行下面的命令。
php yii migrate/up --migrationPath=@vendor/burakcantemizel/yii2-fdcys/src/migrations
现在迁移操作已经完成。模块已准备就绪。
要测试模块,请访问浏览器中的 siteAdress/backend/web/index.php?r=fdcys 地址。您将看到模块的主页。
模块介绍和项目报告
本部分将展示模块内容、课程实践等,并对一些部分进行概述。
迁移
模块中已创建了 3 个表格,并使用外键建立了表格间的关系,对主键进行了索引。存在 3 个表格:公司、部门和员工。表格间的关系如下所示。使用了 3 个外键。
在创建模型时将使用这些关系图。
Gii、模型和 CRUD
根据每个表格通过 Gii 创建模型时定义的关系特性,创建了模型。根据关系,每个模型都有不同的单数和复数 activeQuery 方法。例如,对于部门表;
/**
* Gets query for [[Calisanlars]].
*
* @return \yii\db\ActiveQuery
*/
public function getCalisanlars()
{
return $this->hasMany(Calisanlar::className(), ['departmanlar_departman_id' => 'departman_id']);
}
/**
* Gets query for [[FirmalarFirma]].
*
* @return \yii\db\ActiveQuery
*/
public function getFirmalarFirma()
{
return $this->hasOne(Firmalar::className(), ['firma_id' => 'firmalar_firma_id']);
}
然后使用 Gii 通过这些模型创建基本功能,控制器和视图已生成。然后进行必要的调整,将表格连接起来。
表单
对表单进行了各种调整。例如,对于员工 _form.php,关系 id 列按照以下方式进行了调整。使用 ArrayHelper、DropDownList 等各种结构,使可以从相关表中根据 id 选择相应的名称。
<?= $form->field($model, 'departmanlar_departman_id')->dropDownList(
ArrayHelper::map(Departmanlar::find()->all(),'departman_id', 'departman_adi'),
['prompt' => 'Departman Seçiniz']
) ?>
同样,在员工 index.php 中,通过调整 GridView 小部件,将关系 id 段替换为相应的名称。
<?= GridView::widget([
...
[
'attribute' => 'departmanlar_departman_id',
'value' => 'departmanlarDepartman.departman_adi',
],
[
'attribute' => 'firmalar_firma_id',
'value' => 'firmalarFirma.firma_adi',
],
...
完成这些操作后,现在在员工表中创建新记录时,选择公司时将列出公司表中的现有公司,同样选择部门时也将列出部门表中的部门。在显示时,现在也将以 id 的名称而不是 id 显示关系。
由于表格之间存在关系,因此删除相关记录时,将删除相关联的其他记录。例如,删除部门时,该部门中所有员工的记录也将被删除。
搜索模型和查询
将列中的 id 与名称关联后,还需要在搜索模型上进行进一步的调整。因为搜索模型仍然通过 id 进行搜索,我们需要将其更改为通过名称进行搜索。以员工的搜索模型为例
...
$query->joinWith('firmalarFirma');
$query->joinWith('departmanlarDepartman');
...
$query->andFilterWhere(['like', 'calisan_ad_soyad', $this->calisan_ad_soyad])
...
->andFilterWhere(['like', 'firmalar.firma_adi', $this->firmalar_firma_id])
->andFilterWhere(['like', 'departmanlar.departman_adi', $this->departmanlar_departman_id]);
在seach modeller中,已经添加了基于id列和名称进行搜索的功能,如上所述的查询操作。通过这种方式,表格被完全关联。
模块主页面
在Yii课程之前,我将w3.css用于创建一个简单的模块主页面,作为html和css课程的一个应用。从这里,我通过路由将用户引导到模块的不同部分。在模块内部,我放置了按钮,以便用户可以通过这些按钮返回到当前页面。此外,我还从模型中获取了当前公司、部门和员工的数量,并将它们展示给用户。
HTTP API
通过ApiController中定义的3个action,我通过HTTP获取请求来获取当前公司、部门和员工列表,并将它们以JSON格式作为响应返回。
domain/backend/web/index.php?r=fdcys/api/firmalar
domain/backend/web/index.php?r=fdcys/api/departmanlar
domain/backend/web/index.php?r=fdcys/api/calisanlar
通过向这些地址发送GET请求,可以获取即时列表。此外,在执行CRUD操作时,可以通过HTTP API按钮在浏览器中查看相关页面上的请求。以下是一个将请求发送到公司地址的Postman示例。
布局
由于项目中不需要视觉效果,因此我只展示了布局的使用。我通过覆盖模块中的yiin main layout并更改了页脚来展示布局的使用。
自定义小工具
为了展示自定义小工具的使用,我在登录页面创建了一个简单的显示“欢迎”信息的widget。
语言翻译
由于无法将language translation从yii-advanced模板的配置转移到扩展,因此messages文件夹功能无效且无法运行。
其他课程应用
如上所述,我主要介绍了所实现的应用。在Mastering Yii书籍的第1-5章中,我使用了但未提及的其他应用。您可以在项目中更详细地了解这些应用。