ovidiupop/yii2-address

地址模块是针对 Yii2 应用设计的扩展,旨在简化地址相关功能的管理和集成。它提供了一种无缝的方式来处理地址作为独立实体,允许您将其与各种模型关联,如客户、公司或应用中的任何其他实体。

安装: 8

依赖项: 1

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

dev-main 2024-01-15 12:04 UTC

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"

配置

  1. 在 migrations 文件夹中运行迁移,以创建 'address' 表。包含地址的模型需要一个 "address_id" 字段,它与 "address" 表相关联。

  2. 在 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)] 作为 "分类"。