jakharbek / yii2-datamanager
yii2 datamanager
dev-master
2018-05-10 08:14 UTC
Requires
- kartik-v/yii2-widget-select2: @dev
- yiisoft/yii2: ~2.0.0
This package is not auto-updated.
Last update: 2024-09-20 21:36:11 UTC
README
yii2 datamanager
安装
安装此扩展的首选方式是通过composer。
运行以下命令之一:
php composer.phar require --prefer-dist jakharbek/yii2-datamanager "*"
或者在您的composer.json
文件的require部分添加以下内容:
"jakharbek/yii2-datamanager": "*"
使用方法
为了开始使用此扩展,您需要在使用之前设置所有关系。
然后,在您打算使用的模型上应用行为
jakharbek\datamanager\behaviors\DataModelBehavior
例如,我们将使用帖子(Posts)模型和人物(Persons)模型,并在帖子与人物之间建立联系
示例
class Posts{ private $_personsdata; public function behaviors() { return [ 'data_persons_model' => [ 'class' => \jakharbek\datamanager\behaviors\DataModelBehavior::className(), 'attribute' => 'personsdata', 'relation_name' => 'persons', 'relation_model' => new Persons(), ] ]; } public function getPersonsdata(){ return $this->_personsdata; } public function setPersonsdata($value){ return $this->_personsdata = $value; } }
动作
在您配置了模型之后,您需要连接“动作”,以便扩展知道在哪里查找数据
jakharbek\datamanager\actions\Action
属性
/** * @var string имя таблица по который нужно произвести поиск */ public $table = "posts"; /** * @var string имя первичного ключа */ public $primaryColumn = "post_id"; /** * @var string имя поля по которому нужно искать */ public $textColumn = "title"; /** * @var string другие поля который нужно вернуть через пробел как и в SQL */ public $otherColumns = '';
示例
class Posts{ public function actions(){ return [ 'getdata' => [ 'class' => 'jakharbek\datamanager\actions\Action', 'table' => 'posts', 'primaryColumn' => 'post_id', 'textColumn' => 'title' ], ]; } }
配置完模型后,您需要输出小部件
- model_db - 当前模型的名称
- name - 表单输入框的名称。
- attribute - 赋予数据的属性名称
- attribute_id - 数据库中与相关表关联的主键字段名称
- attribute_text - 数据库中与相关表关联的名称字段名称
echo jakharbek\datamanager\widgets\InputWidget::widget([ 'model_db' => $model, 'name' => 'Posts[personsdata]', 'attribute' => 'personsdata', 'attribute_id' => 'person_id', 'attribute_text' => 'title', 'relation_name' => 'persons', 'url' => '/posts/posts/getdata/', ]);