d3yii2 / d3system
Yii2系统
dev-master
2024-09-23 09:40 UTC
Requires
- php: >=5.4.0
- d3yii2/yii2-datetime: *
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-09-23 09:40:52 UTC
README
d3system
安装
composer require d3yii2/d3system dev-master
在单独的配置文件中配置模块
模块从D3Module扩展
class Module extends D3Module { }
在配置文件中只定义路径
'd3persons' => [ 'class' => 'yii2d3\d3persons\Module', 'configFilePath' => __DIR__ .'/module_d3persons.php' ],
在模块配置文件中添加模块类以供IDE提示
return [ 'class' => 'yii2d3\d3persons\Module', 'ownerExpire' => '+10 years', 'userExpire' => '+10 days', ];
配置
添加翻译
$config = [ 'components' => [ 'i18n' => [ 'translations' => [ 'd3system*' => [ 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@d3yii2/d3system/messages', 'sourceLanguage' => 'en-US', ], 'crud' => [ 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@d3yii2/d3system/messages', 'sourceLanguage' => 'en-US', ], ] ] ] ];
组件
模型列表
配置
'components' => [ 'ModelsList' => [ 'class' => 'd3system\compnents\ModelsList', 'cacheKey' => 'd3system\modeList', 'cacheDuration' => 3600 ]
用法
$modelId = \Yii::$app->ModelsList->getId($model);
组件命令
d3system必须在控制台配置中定义为模块
'modules' => [ 'd3system' => [ 'class' => 'd3system\Module' ], ]
从D3CommandComponent扩展
use d3system\compnents\D3CommandComponent; class DailyActivityNotification extends D3CommandComponent { public $setting1; public $setting2; public function init() { //init logic } public function run(D3ComponentCommandController $controller) : bool { parent::run($controller); //runing logic } }
在控制台配置中定义为组件
'components' => [ 'activityEmail' => [ 'class' => 'd3yii2\d3activity\components\DailyActivityNotification', 'setting1' => 15, 'setting2' => 22, ]
执行命令组件
yii d3system/d3-component-command activityEmail,component2,component3
日期和时间转换
依赖项 https://github.com/d3yii2/yii2-datetime
转换仅适用于以"_local"结尾的模型属性,例如
$model->YOUR_ATTRIBUTE
使用
$model->YOUR_ATTRIBUTE_local
在模型中添加行为配置
将行为添加到您的模型中,并列出需要转换的属性 重要:在此处不要添加"_local"后缀!
public function behaviors(): array { return D3DateTimeBehavior::getConfig(['YOUR_ATTRIBUTE']); }
或如果您需要自定义选项(请参阅https://github.com/d3yii2/yii2-datetime)
public function behaviors() { return [ 'datetime' => [ 'class' => D3DateTimeBehavior::className(), // Our behavior 'attributes' => [ 'YOUR_ATTRIBUTE', // List all editable date/time attributes ], // Date formats or other options 'originalFormat' => ['datetime', 'yyyy-MM-dd HH:mm:ss'], 'targetFormat' => 'date', ] ]; }
在视图中显示值
<?= $model->YOUR_ATTRIBUTE_local ?>
在保存前分配值
$model->load(Yii::$app->request->post());
或
$model->YOUR_ATTRIBUTE_local = $value;
或
$model->setAttribute('YOUR_ATTRIBUTE_local', $value);
通过多次赋值确保加载()时本地属性有'safe'规则
// Virtual params for DateTimeBehavior public function rules(): array { return [ [...], [['YOUR_ATTRIBUTE_local'], 'safe'], ]; }
在控制器中初始化D3EditableAction
editAbleFields: must match real attributes
editAbleFieldsForbbiden: must match real attributes
modelName: pass current controller model Name with full Namespace
/** * @var array */ public $editAbleFields = ['hasEditable', 'status']; /** * @var array */ public $editAbleFieldsForbbiden = [];
操作
public function actions() { return [ 'editable' => [ 'class' => D3EditableAction::class, 'modelName' => AudAuditor::class, 'editAbleFields' => ['status','notes'], 'editAbleFieldsForbbiden' => $this->editAbleFieldsForbbiden, 'preProcess' => static function (Inout $model) { if ($model->isAttributeChanged('driver')) { $model->driver = iconv('UTF-8', 'ASCII//TRANSLIT',$model->driver); } }, 'outPreProcess' => static function (ContInout $model, array $output) { if (isset($output['ediBookingId'])) { $output['ediBookingId'] = DepoEdiBookingDictionary::getIdLabel($output['ediBookingId']); } return $output; } ], ]; }