Примеры использования
Формирование страницы настроек в админ-панели CMS на примере CMS OpenCart (паттерн MVC)
View на шаблонизаторе twig
{{ header }}{{ column_left }} <div id="content"> <div class="page-header"> <div class="container-fluid"> <div class="pull-right"> <button type="submit" form="form-intellectmoney" class="btn btn-primary"><i class="fa fa-check-circle"></i> {{ button_save }}</button> <a href="{{ cancel }}" class="btn btn-default"><i class="fa fa-reply"></i> {{ button_cancel }}</a></div> <h1 style="background:url('/admin/view/image/payment/intellectmoney.png') center left; background-repeat: no-repeat; background-size: 28%; padding: 10px 0 10px 90px;">{{ heading_title }}</h1> <ul class="breadcrumb"> {% for breadcrumb in breadcrumbs %} <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li> {% endfor %} </ul> </div> </div> <div class="container-fluid"> {% if error_warning %} <div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> {{ error_warning }} <button type="button" class="close" data-dismiss="alert">×</button> </div> {% endif %} <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit }}</h3> </div> <div class="panel-body"> <form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-intellectmoney" class="form-horizontal"> <div class="form-group required"> <label class="col-sm-2 control-label" for="payment_intellectmoney_eshopId">{{ entry_eshopId }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_eshopId" value="{{ payment_intellectmoney_eshopId }}" class="form-control" id="payment_intellectmoney_eshopId" /> {% if error_eshopId %} <div class="text-danger">{{ error_eshopId }}</div> {% endif %} </div> </div> <div class="form-group required"> <label class="col-sm-2 control-label" for="payment_intellectmoney_secretKey">{{ entry_secretKey }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_secretKey" value="{{ payment_intellectmoney_secretKey }}" class="form-control" id="payment_intellectmoney_secretKey" /> {% if error_secretKey %} <div class="text-danger">{{ error_secretKey }}</div> {% endif %}</td> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_total">{{ entry_total }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_total" value="{{ payment_intellectmoney_total }}" class="form-control" id="payment_intellectmoney_total" /> </div> </div> <div class="form-group required"> <label class="col-sm-2 control-label" for="payment_intellectmoney_resultUrl">{{ entry_resultUrl }}</label> <div class="col-sm-10"> <div class="input-group"><span class="input-group-addon"><i class="fa fa-link"></i></span> <input type="text" readonly="readonly" value="{{ payment_intellectmoney_resultUrl }}" id="payment_intellectmoney_resultUrl" class="form-control"> {% if error_resultUrl %} <div class="text-danger">{{ error_resultUrl }}</div> {% endif %} </div> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_testMode">{{ entry_testMode }}</label> <div class="col-sm-10"> <input type="checkbox" name="payment_intellectmoney_testMode" {% if payment_intellectmoney_testMode %}checked {% endif %} class="form-control" id="payment_intellectmoney_testMode" /> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_holdMode">{{ entry_holdMode }}</label> <div class="col-sm-10"> <input type="checkbox" name="payment_intellectmoney_holdMode" {% if payment_intellectmoney_holdMode %}checked {% endif %} class="form-control" id="payment_intellectmoney_holdMode" /> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_holdTime">{{ entry_holdTime }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_holdTime" value="{{ payment_intellectmoney_holdTime }}" class="form-control" id="payment_intellectmoney_holdTime" /> {% if error_holdTime %} <div class="text-danger">{{ error_holdTime }}</div> {% endif %} </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_expireDate">{{ entry_expireDate }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_expireDate" value="{{ payment_intellectmoney_expireDate }}" class="form-control" id="payment_intellectmoney_expireDate" /> {% if error_expireDate %} <div class="text-danger">{{ error_expireDate }}</div> {% endif %} </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_successUrl">{{ entry_successUrl }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_successUrl" value="{{ payment_intellectmoney_successUrl }}" class="form-control" id="payment_intellectmoney_successUrl" /> {% if error_successUrl %} <div class="text-danger">{{ error_successUrl }}</div> {% endif %} </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_preference">{{ entry_preference }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_preference" value="{{ payment_intellectmoney_preference }}" class="form-control" id="payment_intellectmoney_preference" /> {% if error_preference %} <div class="text-danger">{{ error_preference }}</div> {% endif %} </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_tax">{{ entry_tax }}</label> <div class="col-sm-10"> <select name="payment_intellectmoney_tax" id="payment_intellectmoney_tax" class="form-control"> {% for VAT in VATs %} <option value="{{ VAT.id }}" {% if VAT.id == payment_intellectmoney_tax %} selected="selected" {% endif %}>{{ VAT.name }}</option> {% endfor %} </select> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_deliveryTax">{{ entry_deliveryTax }}</label> <div class="col-sm-10"> <select name="payment_intellectmoney_deliveryTax" id="payment_intellectmoney_deliveryTax" class="form-control"> {% for VAT in VATs %} <option value="{{ VAT.id }}" {% if VAT.id == payment_intellectmoney_deliveryTax %} selected="selected" {% endif %}>{{ VAT.name }}</option> {% endfor %} </select> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_group">{{ entry_group }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_group" value="{{ payment_intellectmoney_group }}" class="form-control" id="payment_intellectmoney_group" /> {% if error_group %} <div class="text-danger">{{ error_group }}</div> {% endif %} </div> </div> {% for statusIm in statusesIm %} <div class="form-group required"> <label class="col-sm-2 control-label" for="{{ statusIm.dataName }}">{{ statusIm.name }}</label> <div class="col-sm-10"> <select name="{{ statusIm.dataName }}" id="{{ statusIm.dataName }}" class="form-control"> {% for order_status in order_statuses %} <option value="{{ order_status.order_status_id }}" {% if order_status.order_status_id == statusIm.value %} selected="selected" {% endif %}>{{ order_status.name }}</option> {% endfor %} </select> </div> </div> {% endfor %} <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_geo_zone_id">{{ entry_geo_zone }}</label> <div class="col-sm-10"> <select name="payment_intellectmoney_geo_zone_id" id="payment_intellectmoney_geo_zone_id" class="form-control"> <option value="0">{{ text_all_zones }}</option> {% for geo_zone in geo_zones %} {% if geo_zone.geo_zone_id == payment_intellectmoney_geo_zone_id %} <option value="{{ geo_zone.geo_zone_id }}" selected="selected">{{ geo_zone.name }}</option> {% else %} <option value="{{ geo_zone.geo_zone_id }}">{{ geo_zone.name }}</option> {% endif %} {% endfor %} </select> </div> </div> <div class="form-group required"> <label class="col-sm-2 control-label" for="payment_intellectmoney_status">{{ entry_status }}</label> <div class="col-sm-10"> <select name="payment_intellectmoney_status" id="payment_intellectmoney_status" class="form-control"> <option value="1" {% if payment_intellectmoney_status == 1 %} selected="selected" {% endif %}>{{ text_enabled }}</option> <option value="0" {% if payment_intellectmoney_status == 0 %} selected="selected" {% endif %}>{{ text_disabled }}</option> </select> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="payment_intellectmoney_sort_order">{{ entry_sort_order }}</label> <div class="col-sm-10"> <input type="text" name="payment_intellectmoney_sort_order" value="{{ payment_intellectmoney_sort_order }}" class="form-control" id="payment_intellectmoney_sort_order" /> </div> </div> </form> </div> </div> </div> </div> {{ footer }}
Controller
<?php class ControllerExtensionPaymentIntellectmoney extends Controller { private $error = array(); public function index() { $this->load->language('extension/payment/intellectmoney'); if (method_exists($this->document, 'setTitle')) $this->document->setTitle($this->language->get('heading_title')); else $this->document->title = $this->language->get('heading_title'); $this->load->model('setting/setting'); $this->load->model('IntellectMoney/intellectmoney_model'); $im_lang = $this->model_IntellectMoney_intellectmoney_model->getLanguageHelperInstance($this->language->data['code']); $im_userSettings = $this->model_IntellectMoney_intellectmoney_model->getUserSettingsInstance(); if (($this->request->server['REQUEST_METHOD'] == 'POST') && ($this->validate($im_lang, $im_userSettings))) { foreach ($this->request->post as &$value) { $value = htmlspecialchars_decode($value); } $this->model_setting_setting->editSetting('payment_intellectmoney', $this->request->post); $this->session->data['success'] = $this->language->get('text_success'); $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)); } //map breadcrums $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_payment'), 'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'], true) ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('extension/payment/intellectmoney', 'user_token=' . $this->session->data['user_token'], true) ); $data['action'] = $this->url->link('extension/payment/intellectmoney', 'user_token=' . $this->session->data['user_token'], true); $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true); //map Titles foreach ($im_userSettings->getNamesOfOrganizationParamsToSave() as $value) { $data['entry_' . $value] = $im_lang->getTitle($value); } $data['entry_total'] = $this->language->get('entry_total'); $data['entry_resultUrl'] = $im_lang->getTitle('resultUrl'); $data['heading_title'] = $this->language->get('heading_title'); $data['text_edit'] = $this->language->get('text_edit'); $data['button_save'] = $this->language->get('button_save'); $data['button_cancel'] = $this->language->get('button_cancel'); $data['tab_general'] = $this->language->get('tab_general'); $data['entry_geo_zone'] = $this->language->get('entry_geo_zone'); $data['entry_status'] = $this->language->get('entry_status'); $data['entry_sort_order'] = $this->language->get('entry_sort_order'); $data['text_enabled'] = $this->language->get('text_enabled'); $data['text_disabled'] = $this->language->get('text_disabled'); $data['text_all_zones'] = $this->language->get('text_all_zones'); //map Errors $data['error_warning'] = isset($this->error['warning']) ? $this->error['warning'] : ""; foreach ($this->error as $key => $value) { $data['error_' . $key] = $value; } //map Values foreach ($im_userSettings->getNamesOfOrganizationParamsToSave() as $value) { if (isset($this->request->post['payment_intellectmoney_' . $value])) { $funcName = 'get' . ucfirst($value); $data['payment_intellectmoney_' . $value] = $this->request->post['payment_intellectmoney_' . $value]; } else { $data['payment_intellectmoney_' . $value] = $this->config->get('payment_intellectmoney_' . $value); } } $this->load->model('localisation/geo_zone'); $data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones(); $this->load->model('localisation/order_status'); $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses(); $data['payment_intellectmoney_total'] = isset($this->request->post['payment_intellectmoney_total']) ? $this->request->post['payment_intellectmoney_total'] : $this->config->get('payment_intellectmoney_total'); $data['payment_intellectmoney_geo_zone_id'] = isset($this->request->post['payment_intellectmoney_geo_zone_id']) ? $this->request->post['payment_intellectmoney_geo_zone_id'] : $this->config->get('payment_intellectmoney_geo_zone_id'); $data['payment_intellectmoney_status'] = isset($this->request->post['payment_intellectmoney_status']) ? $this->request->post['payment_intellectmoney_status'] : $this->config->get('payment_intellectmoney_status'); $data['payment_intellectmoney_sort_order'] = isset($this->request->post['payment_intellectmoney_sort_order']) ? $this->request->post['payment_intellectmoney_sort_order'] : $this->config->get('payment_intellectmoney_sort_order'); $data['payment_intellectmoney_total'] = isset($this->request->post['payment_intellectmoney_total']) ? $this->request->post['payment_intellectmoney_total'] : $this->config->get('payment_intellectmoney_total'); $data['payment_intellectmoney_geo_zone_id'] = isset($this->request->post['payment_intellectmoney_geo_zone_id']) ? $this->request->post['payment_intellectmoney_geo_zone_id'] : $this->config->get('payment_intellectmoney_geo_zone_id'); $data['payment_intellectmoney_status'] = isset($this->request->post['payment_intellectmoney_status']) ? $this->request->post['payment_intellectmoney_status'] : $this->config->get('payment_intellectmoney_status'); $data['payment_intellectmoney_sort_order'] = isset($this->request->post['payment_intellectmoney_sort_order']) ? $this->request->post['payment_intellectmoney_sort_order'] : $this->config->get('payment_intellectmoney_sort_order'); $data['payment_intellectmoney_resultUrl'] = HTTP_CATALOG . 'index.php?route=extension/payment/intellectmoney/callback'; $this->load->model('localisation/order_status'); $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses(); $data['VATs'] = $this->model_IntellectMoney_intellectmoney_model->getVATsList(); $data['statusesIm'] = array( array( 'name' => $data['entry_statusCreated'], 'dataName' => 'payment_intellectmoney_statusCreated', 'value' => $data['payment_intellectmoney_statusCreated'] ), array( 'name' => $data['entry_statusCancelled'], 'dataName' => 'payment_intellectmoney_statusCancelled', 'value' => $data['payment_intellectmoney_statusCancelled'] ), array( 'name' => $data['entry_statusPaid'], 'dataName' => 'payment_intellectmoney_statusPaid', 'value' => $data['payment_intellectmoney_statusPaid'] ), array( 'name' => $data['entry_statusHolded'], 'dataName' => 'payment_intellectmoney_statusHolded', 'value' => $data['payment_intellectmoney_statusHolded'] ), array( 'name' => $data['entry_statusPartiallyPaid'], 'dataName' => 'payment_intellectmoney_statusPartiallyPaid', 'value' => $data['payment_intellectmoney_statusPartiallyPaid'] ), array( 'name' => $data['entry_statusRefunded'], 'dataName' => 'payment_intellectmoney_statusRefunded', 'value' => $data['payment_intellectmoney_statusRefunded'] ), ); $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); $this->response->setOutput($this->load->view('extension/payment/intellectmoney', $data)); } private function validate($im_lang, $im_userSettings) { if (!$this->user->hasPermission('modify', 'extension/payment/intellectmoney')) { $this->error['warning'] = $this->language->get('error_permission'); } foreach ($im_userSettings->getNamesOfOrganizationParamsToSave() as $paramName) { $methodName = 'set' . ucfirst($paramName); $paramValue = isset($this->request->post['payment_intellectmoney_' . $paramName]) ? $this->request->post['payment_intellectmoney_' . $paramName] : ""; if (in_array($paramName, array('holdMode', 'testMode')) && $paramValue == 'on') { $paramValue = 1; } if (!$im_userSettings->$methodName($paramValue)) { $this->error[$paramName] = $im_lang->getDesc($paramName); } } return empty($this->error); } } ?>
Model
<?php require_once("IntellectMoneyCommon/LanguageHelper.php"); require_once("IntellectMoneyCommon/UserSettings.php"); require_once("IntellectMoneyCommon/VATs.php"); class ModelIntellectMoneyIntellectmoneyModel extends Model { public function getLanguageHelperInstance($lang = 'ru', $isCp1251 = NULL) { return \PaySystem\LanguageHelper::getInstance($lang, $isCp1251); } public function getUserSettingsInstance($params = array(), $isAllowChangeValues = true) { return \PaySystem\UserSettings::getInstance($params, $isAllowChangeValues); } public function getVATsList() { return \PaySystem\VATs::getList(); } }