mrstroz / yii2-wavecms-form
WaveCMS 表单模块
0.2.3
2020-05-04 10:06 UTC
Requires
- php: >=5.6.0
- 2amigos/yii2-switch-widget: ~1.0
- himiklab/yii2-recaptcha-widget: *
- mihaildev/yii2-ckeditor: *
- mihaildev/yii2-elfinder: *
- mrstroz/yii2-wavecms: >=0.2.6
- yiisoft/yii2: ~2.0.6
Requires (Dev)
- php: >=5.6.0
- yiisoft/yii2: ~2.0.6
README
为 Yii 2 WaveCMS 提供表单模块。
请首先从 Yii 2 WaveCMS 完成所有安装步骤。
安装
安装此扩展的首选方式是通过 composer。
运行
composer require --prefer-source "mrstroz/yii2-wavecms-form" "~0.2.1"
或者
"mrstroz/yii2-wavecms-form": "~0.2.1"
将以下内容添加到您的 composer.json
文件的 require 部分中。
需求
- 更新
backend/config/main.php
(Yii2 高级模板)
'modules' => [ // ... 'wavecms-form' => [ 'class' => 'mrstroz\wavecms\form\Module', /* * Override classes 'classMap' => [ 'Form' => 'common\models\Form', ] */ ], ],
表单视图可以被后端 主题 覆盖;
- 在
console/config/main.php
中添加migrationPath
并运行yii migrate
// Add migrationPaths to console config: 'controllerMap' => [ 'migrate' => [ 'class' => 'yii\console\controllers\MigrateController', 'migrationPath' => [ '@vendor/mrstroz/yii2-wavecms-form/migrations' ], ], ],
或直接运行迁移
yii migrate/up --migrationPath=@vendor/mrstroz/yii2-wavecms-form/migrations
- 将
reCaptcha
组件添加到common/config/main-local.php
'components' => [ 'reCaptcha' => [ 'name' => 'reCaptcha', 'class' => 'himiklab\yii2\recaptcha\ReCaptcha', 'siteKey' => 'your siteKey', 'secret' => 'your secret key', ], // ... ]
前端使用
- 控制器
<?php // ... use mrstroz\wavecms\form\models\Form; use mrstroz\wavecms\form\models\FormSettings; // ... public function actionIndex() { $model = new Form(); $model->scenario = Form::SCENARIO_WEB; $formSettings = false; if ($model->load(Yii::$app->request->post()) && $model->validate()) { $model->save(); $formSettings = FormSettings::find()->getSettings('contact')->one(); $formSettings->replaceTags($model); $formSettings->replaceExtraTag('tag', 'value'); if ($formSettings->send_email) { Yii::$app->mailer->compose() ->setSubject($formSettings->subject) ->setFrom([$formSettings->from_email => $formSettings->from_name]) ->setHtmlBody($formSettings->text) ->setTo(explode(',', $formSettings->recipient)) ->send(); } if ($formSettings->user_send_email) { Yii::$app->mailer->compose() ->setSubject($formSettings->user_subject) ->setFrom([$formSettings->user_from_email => $formSettings->user_from_name]) ->setHtmlBody($formSettings->user_text) ->setTo($model->email) ->send(); } } return $this->render('index', [ 'model' => $model, 'formSettings' => $formSettings ]); }
- 视图
<?php // ... use himiklab\yii2\recaptcha\ReCaptcha; use yii\helpers\Html; use yii\bootstrap\ActiveForm; use yii\widgets\Pjax; // ... Pjax::begin(); /** @var \mrstroz\wavecms\form\models\FormSettings $formSettings */ if ($formSettings) { echo $formSettings->thanks_text; } else { $form = ActiveForm::begin(['options' => ['data-pjax' => true]]); echo Html::activeHiddenInput($model, 'language', ['value' => Yii::$app->language]); echo Html::activeHiddenInput($model, 'type', ['value' => 'contact']); echo $form->field($model, 'name'); echo $form->field($model, 'company'); echo $form->field($model, 'email'); echo $form->field($model, 'phone'); echo $form->field($model, 'subject'); echo $form->field($model, 'text')->textarea(); echo $form->field($model, 'agree_1')->checkbox(); echo $form->field($model, 'agree_2')->checkbox(); echo $form->field($model, 'reCaptcha')->label(false)->widget(ReCaptcha::class); echo Html::submitButton('Send message', ['class' => 'btn btn-primary']); ActiveForm::end(); } Pjax::end(); // ...