m00nk / yii2-dynmodel2
动态模型 Yii2 组件
2.0.1
2016-04-02 13:25 UTC
Requires
- php: >=5.4.0
- yiisoft/yii2: >=2.0.4
This package is auto-updated.
Last update: 2024-09-25 05:58:35 UTC
README
配置: 在应用程序设置中指定
'controllerMap' => [ 'dynmodel' => [ 'class' => 'm00nk\dynmodel2\controllers\DynmodelController' ] ]
嵌入编辑器
控制器
// достаем из хранилища схему. Данная модель содержит текстовое поле 'value', в котором хранится схема в JSON. $model = Setting::findOne(['category' => 'cms/user', 'key' => 'profile_scheme']); if($model->load(Yii::$app->request->post()) && $model->save()) { Yii::$app->session->addFlash('success', 'Изменения сохранены'); return $this->redirect(['list']); } return $this->render('schemeEditor', ['model' => $model]);
编辑器视图(schemeEditor.php)
$form = \yii\bootstrap\ActiveForm::begin(); echo DynModelEditor::widget([ 'model' => $model, 'attribute' => 'value' // это имя аттрибута в модели $scheme, которых хранит данные ]); echo \yii\helpers\Html::submitButton(Yii::t('app', 'Сохранить'), ['class' => 'btn btn-primary']); \yii\bootstrap\ActiveForm::end();
如果想让表格占据整个表单的宽度,不能使用习惯的 $form->field($model, 'value')。
使用创建的模型(例如,反馈表单)
控制器
// достаем схему из хранилища $scheme = Setting::findOne(['category' => 'cms/user', 'key' => 'profile_scheme']); // создаем пустую модель $dm = new DynModel(); // загружаем в нее схему $dm->schemeFromJson($scheme->value); if($dm->load(Yii::$app->request->post()) && $dm->validate()) { // здесь можем работать с $dm как с обычной моделью, например // получить данные можно по foreach($dm->attributes as $k => $v) } return $this->render('form', ['dm' => $dm]);
视图(form.php)
$form = ActiveForm::begin(); echo m00nk\dynmodel2\DynModelFields::widget([ 'model' => $dm, 'form' => $form, ]); ActiveForm::end();