Commit 777a6549 by semenov

Начало разработки

parent f10cfbb2
<?php
/**
* @author Semenov Alexander <semenov@skeeks.com>
* @link http://skeeks.com/
* @copyright 2010 SkeekS (СкикС)
* @date 15.03.2015
*/
namespace skeeks\modules\cms\shop\controllers;
use skeeks\cms\base\Controller;
use skeeks\modules\cms\form\models\Form;
use skeeks\modules\cms\form\models\FormField;
use skeeks\modules\cms\form\models\FormSendMessage;
use skeeks\modules\cms\shop\models\ShopOrder;
use yii\filters\VerbFilter;
use yii\helpers\ArrayHelper;
use yii\web\Response;
use yii\widgets\ActiveForm;
/**
* Class BackendController
* @package skeeks\modules\cms\form\controllers
*/
class BackendController extends Controller
{
/**
* @return array
*/
public function behaviors()
{
return ArrayHelper::merge(parent::behaviors(), [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'validate' => ['post'],
'submit' => ['post'],
],
],
]);
}
/**
* Процесс отправки формы
* @return array
*/
public function actionCreateOrder()
{
if (\Yii::$app->request->isAjax && !\Yii::$app->request->isPjax) {
\Yii::$app->response->format = Response::FORMAT_JSON;
$response = [
'success' => false,
'message' => 'Произошла ошибка',
];
if ($formId = \Yii::$app->request->post(Form::FROM_PARAM_ID_NAME)) {
/**
* @var $modelForm Form
*/
$modelForm = Form::find()->where(['id' => $formId])->one();
$model = $modelForm->createValidateModel();
if ($model->load(\Yii::$app->request->post()) && $model->validate()) {
//Все проверки прошли, формируем модель отправленного сообщения и сохраняем ее
$modelFormSendMessage = new FormSendMessage();
$modelFormSendMessage->data_values = $model->attributeValues();
$modelFormSendMessage->data_labels = $model->attributeLabels();
$modelFormSendMessage->page_url = \Yii::$app->request->referrer;
$modelFormSendMessage->form_id = $formId;
if ($modelFormSendMessage->save())
{
$modelFormSendMessage->notify();
$response['success'] = true;
$response['message'] = 'Успешно отправлена';
} else {
$response['message'] = 'Не удалось сохранить сообщение в базу';
}
//Создание нового заказа
$shopOrder = new ShopOrder([
''
]);
} else {
$response['message'] = 'Форма заполнена неправильно';
}
return $response;
}
}
}
}
\ No newline at end of file
......@@ -12,6 +12,7 @@ use skeeks\cms\models\Core;
use skeeks\modules\cms\form\models\Form;
use \Yii;
use yii\helpers\ArrayHelper;
use yii\web\ErrorHandler;
/**
* This is the model class for table "{{%shop_person_type}}".
......@@ -116,4 +117,34 @@ class ShopPersonType extends Core
{
return $this->getForm()->one();
}
/**
* @return string
*/
public function renderForm()
{
/**
* @var $moduleForm \skeeks\modules\cms\shop\Module
*/
//$moduleForm = \Yii::$app->getModule('shop');
$moduleForm = \Yii::$app->getModule('form');
$formModel = $this->form();
try
{
return \Yii::$app->getModule('shop')->renderFile('cart-form.php', [
'shopPersonType' => $this,
'module' => $moduleForm,
'modelForm' => $formModel,
'fields' => $formModel->fields(),
'model' => $formModel->createValidateModel()
]);
} catch (\Exception $e)
{
ob_end_clean();
ErrorHandler::convertExceptionToError($e);
return 'Ошибка рендеринга формы: ' . $e->getMessage();
}
}
}
\ No newline at end of file
<?php
/**
* @author Semenov Alexander <semenov@skeeks.com>
* @link http://skeeks.com/
* @copyright 2010 SkeekS (СкикС)
* @date 17.03.2015
*
* @var $formField \skeeks\modules\cms\form\models\FormField
* @var $model \skeeks\modules\cms\form\models\FormValidateModel
* @var $shopPersonType \skeeks\modules\cms\shop\models\ShopPersonType
*/
use skeeks\modules\cms\form\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin([
'modelForm' => $model->modelForm,
'action' => \skeeks\cms\helpers\UrlHelper::construct('shop/backend/create-order')->toString(),
]);
?>
<?= \yii\helpers\Html::hiddenInput('shopPersonType', $shopPersonType->id); ?>
<? if ($fields) : ?>
<? foreach ($fields as $formField) : ?>
<?= $formField->renderActiveForm($form, $model)?>
<? endforeach; ?>
<? endif; ?>
<?php ActiveForm::end(); ?>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment