卡拉库姆/yii2-region-reference

本扩展提供区域参考模块

安装: 23

依赖: 0

建议: 0

安全: 0

星标: 1

关注者: 1

分支: 3

开放问题: 0

类型:yii2-extension

1.0.1 2016-10-27 19:52 UTC

This package is not auto-updated.

Last update: 2024-09-14 20:09:37 UTC


README

此扩展提供具有以下功能的区域参考模块(后端和前端):后端

  • 可定制区域结构(国家-区域-城市...)
  • 批量创建区域
  • 导入/导出整个国家结构
  • 两个后端模块主题:默认 yii2 和 AdminLTE
  • 在安装迁移时自动生成区域结构示例数据(可选)

前端 & 后端

  • 用于搜索区域的 Ajax 控制器。适用于选择区域的选择2字段。

安装

安装此扩展的首选方式是通过 composer

运行

php composer.phar require --prefer-dist karakum/yii2-region-reference "*"

或在您的 composer.json 文件的 require 部分添加

"karakum/yii2-region-reference": "*"

配置

在应用程序配置中添加

    'modules' => [
    	...
        'regions' => [
            'class' => 'karakum\region\BackendModule',
        ],
    	...
    ],
    'components' => [
    	...
        'regionManager' => [
            'class' => 'karakum\region\RegionManager',
        ],
    	...
    ],

对于前端应用程序,您可以使用 karakum\region\FrontendModule,它仅提供未授权访问的 Ajax 控制器。karakum\region\BackendModule 已经包含 Ajax 控制器。

默认国家。如果您只想在您的应用程序中使用一个国家,您可以在区域管理器中设置 country 属性(默认为 false)为国家代码。例如,如果您设置为 RU,则它将改变管理器函数的一些行为:函数 getRegionFullname 将在输出中省略国家名称,Ajax 输出将仅包含所选国家的区域,并排除国家记录。

迁移

在应用迁移之前,您可以设置 exampleData 属性为 true(默认为 false)为 regionManager 组件以生成一些示例数据。如果您这样做,则迁移将创建

  • 区域类型。默认:国家,区域,城市。它取决于区域管理器的 defaultTypes 属性。
  • 区域级别。默认:国家,国家内的区域,国家内的区域内的城市,国家内的城市。它取决于区域管理器的 defaultLevels 属性。

迁移将创建具有默认名称的表 {{%region}}{{%region_level}}{{%region_type}}。要更改它,请使用区域管理器组件的 regionTypeTableregionLevelTableregionTable 属性。

要应用迁移,您可以将 @karakum/region/migrations 添加到迁移查找列表(如果您使用类似 cyberz/yii2-multipath-migrations 的扩展)或运行

$ yii migrate --migrationPath=@karakum/region/migrations

主题选择

后端模块提供了两个预定义的主题。默认情况下,它使用标准 Yii2 主题。如果您喜欢 AdminLTE 模板并使用扩展 dmstr/yii2-adminlte-asset,您可以使用预定义的 AdminLTE 主题

    'components' => [
	    ...
        'view' => [
            'theme' => [
                'pathMap' => [
                    '@karakum/region/views' => '@karakum/region/themes/adminlte/views',
                ],
            ],
        ],
	    ...
    ],

两个主题都使用模块预定义的布局。要使用您自己的布局,只需在模块配置中将 layout 设置为 null

    'modules' => [
        'regions' => [
            'class' => 'karakum\region\BackendModule',
            'layout' => null,
        ],
    ],

用法

使用 kartik-v Select2 进行自动完成选择区域的示例

	<?= $form->field($model, 'region_id')->widget(\kartik\select2\Select2::className(), [
		'data' => $model->region ? [$model->region_id => $model->region->name] : [],
		'options' => ['placeholder' => 'Select region ...'],
		'pluginOptions' => [
			'allowClear' => false,
			'ajax' => [
				'url' => Url::to(['/regions/ajax']),
				'dataType' => 'json',
				'quietMillis' => 100,
				'data' => new JsExpression('function (term, page) {
					return {
						page_limit: 10,
						RegionSearch: { search: term.term, status: ' . \karakum\region\models\Region\Region::STATUS_ACTIVE . ' },
					};
				}'),
				'results' => new JsExpression('function (data, page) {
					return { results: data.results };
				}'),
			],
		],
	]) ?>