ovidiupop / yii2-address
地址模块是针对 Yii2 应用设计的扩展,旨在简化地址相关功能的管理和集成。它提供了一种无缝的方式来处理地址作为独立实体,允许您将其与各种模型关联,如客户、公司或应用中的任何其他实体。
Requires
- yiisoft/yii2: 2.*
This package is auto-updated.
Last update: 2024-09-15 13:30:05 UTC
README
描述
地址模块是针对 Yii2 应用设计的扩展,旨在简化应用中地址相关功能的管理和集成。
它提供了一种无缝的方式来处理地址作为独立实体,
允许您将其与各种模型关联,如客户、公司或应用中的任何其他实体。
。
安装
推荐使用 Composer 进行安装。
composer require ovidiupop/yii2-address "@dev"
或者,将以下行添加到您的 composer.json 文件中:
"ovidiupop\yii2-address": "@dev"
配置
-
在 migrations 文件夹中运行迁移,以创建 'address' 表。包含地址的模型需要一个 "address_id" 字段,它与 "address" 表相关联。
-
在 config/main.php 文件中,添加
'modules' => [
'address' => [
'class' => 'ovidiupop\address\Address',
],
........
'controllerMap' => [
'address'=> 'ovidiupop\address\controllers\AddressController',
..............
使用方法
在正在使用的控制器的创建和更新操作中,您可以按照以下步骤进行
use ovidiupop\address\models\Address;
public function actionCreate()
{
$model = new Model();
$addressModel = new Address();
if ($model->load(Yii::$app->request->post()) && $addressModel->load(Yii::$app->request->post())) {
if ($addressModel->save()) {
$model->address_id = $addressModel->id;
if ($model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
}
}
return $this->render('create', [
'model' => $model,
'addressModel' => $addressModel,
]);
}
public function actionUpdate($id)
{
$model = $this->findModel($id);
$addressModel = $model->address_id ? Address::findOne($model->address_id) : new Address();
if ($model->load(Yii::$app->request->post()) && $addressModel->load(Yii::$app->request->post())) {
if ($addressModel->save()) {
$model->address_id = $addressModel->id;
if ($model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
}
}
return $this->render('update', [
'model' => $model,
'addressModel' => $addressModel,
]);
}
在主机模型表单中,添加预定义的表单变体之一来显示地址字段
-
如果您想水平显示输入(默认模式)
<?php echo Yii::$app->getModule('address')->addressComponent->formInclude($addressModel, $form) ?>
-
如果您想垂直显示输入
<?php echo Yii::$app->getModule('address')->addressComponent->formInclude($addressModel, $form, 1) ?>
-
如果您想垂直显示为 2 列
<?php echo Yii::$app->getModule('address')->addressComponent->formInclude($addressModel, $form, 2) ?>
-
如果您需要一个自定义表单,您可以复制现有的三个之一并根据您的偏好进行调整,
或者创建一个全新的。要使用它,请将自定义表单或表单的路径添加到配置中,如下所示'modules'=>[ 'address' => [ 'class' => 'ovidiupop\address\AddressModule', 'formCustom' => '@path/to/views/my_custom_form', ],
在这种情况下,地址表单将在具有
<?php echo Yii::$app->getModule('address')->addressComponent->formInclude($addressModel, $form, 'custom') ?>
国际化
对于消息翻译,使用了 'address' 惯例 [Yii::t('address', message)] 作为 "分类"。