Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

setting/setting не сохраняет введённые данные


Recommended Posts

Добрый день! Создал я модуль на setting/setting, но данные при сохранении в админке не сохраняются. Помогите пожалуйста!
Код admin/controller:

<?php
class ControllerExtensionModuleAddFields2 extends Controller
{
	private $error = array(); // Массив в который записывается лог ошибок

	public function index()
	{
		$this->load->language('extension/module/add_fields2'); // языковой файл
		$this->document->setTitle(strip_tags($this->language->get('heading_title'))); // название модуля
		$this->load->model('setting/setting'); // используемая модель

		// Сохранение настроек модуля, когда пользователь нажал "Записать"
		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
			$this->model_setting_setting->editSetting('module_add_fields2', $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=module', true));
		}

		// Обработка ошибок (возвращает предупреждение если что-то не так)
		if (isset($this->error['warning'])) {
			$data['error_warning'] = $this->error['warning'];
		} else {
			$data['error_warning'] = '';
		}

		// Хлебные крошки
		$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_extension'),
			'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true)
		);
		$data['breadcrumbs'][] = array(
			'text' => $this->language->get('heading_title'),
			'href' => $this->url->link('extension/module/add_fields2', 'user_token=' . $this->session->data['user_token'], true) // !!!
		);

		// Кнопки действий
		$data['action'] = $this->url->link('extension/module/add_fields2', 'user_token=' . $this->session->data['user_token'], true); // !!!
		$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true);

		$data['header'] = $this->load->controller('common/header');
		$data['column_left'] = $this->load->controller('common/column_left');
		$data['footer'] = $this->load->controller('common/footer');
		

		// КАСТОМНЫЕ ПОЛЯ:
		// Статус расширения - вкл/выкл
		if (isset($this->request->post['status'])) {
			$data['status'] = $this->request->post['status'];
		} else {
			$data['status'] = $this->config->get('status');
		}
		
		if (isset($this->request->post['test'])) {
			$data['test'] = $this->request->post['test'];
		} else {
			$data['test'] = $this->config->get('test');
		}

		
		if (isset($this->request->post['title'])) {
			$data['title'] = $this->request->post['title'];
		} else {
			$data['title'] = $this->config->get('title');
		}

		$this->load->model('localisation/language');

		$data['languages'] = $this->model_localisation_language->getLanguages();

		// Вывод в twig
		$this->response->setOutput($this->load->view('extension/module/add_fields2', $data)); // !!!
	}


	// Проверка прав на редактировние модуля и заполненные поля
	protected function validate()
	{
		if (!$this->user->hasPermission('modify', 'extension/module/add_fields2')) { // !!!
			$this->error['warning'] = $this->language->get('error_permission');
		}

		return !$this->error;
	}
}

 

И код в admin/view:

{{ header }}{{ column_left }}
<div id="content">
	<div class="page-header">
		<div class="container-fluid">
			<div class="pull-right">
				<!-- Кнопка сохранить -->
				<button type="submit" form="form-module" data-toggle="tooltip" title="{{ button_save }}"
					class="btn btn-primary">
					<i class="fa fa-save"></i>
				</button>
				<!-- Кнопка отменить -->
				<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default">
					<i class="fa fa-reply"></i>
				</a>
			</div>
			<h1>{{ heading_title }}</h1> <!-- Название плагина -->
			<!-- Хлебные крошки -->
			<div>
				<ul class="breadcrumb">
					{% for breadcrumb in breadcrumbs %}
					<li>
						<a href="{{ breadcrumb.href }}">{{ breadcrumb.text|striptags }}</a>
					</li>
					{% endfor %}
				</ul>
			</div>
		</div>
	</div>


	<div class="container-fluid">
		<!-- Уведомление если есть ошибка -->
		{% if error_warning %}
		<div class="alert alert-danger alert-dismissible">
			<i class="fa fa-exclamation-circle"></i>
			{{ error_warning }}
			<button type="button" class="close" data-dismiss="alert">&times;</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-module"
					class="form-horizontal">

					<!-- Статус - вкл/выкл -->
					<div class="form-group">
						<label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
						<div class="col-sm-10">
							<select name="status" id="input-status" class="form-control">
								{% if status %}
								<option value="1" selected="selected">{{ text_enabled }}</option>
								<option value="0">{{ text_disabled }}</option>
								{% else %}
								<option value="1">{{ text_enabled }}</option>
								<option value="0" selected="selected">{{ text_disabled }}</option>
								{% endif %}
							</select>
						</div>
					</div>

					<!-- Название модуля -->
					<div class="form-group">
						<label class="col-sm-2 control-label" for="input-test">{{ text_test }}</label>
						<div class="col-sm-10">
							{% for lang in languages %}
							<input type="text" name="test[{{ lang.language_id }}]" value="{{ test[lang.language_id] }}"
								placeholder="{{ text_name }}" id="input-test" class="form-control" />
							{% endfor %}
						</div>
					</div>


					<div class="form-group">
						<label class="col-sm-2 control-label" for="input-title">
							{{ text_test }}
						</label>
						<div class="col-sm-10">
							{% for lang in languages %}
							<div class="input-group">
								<span class="input-group-addon">
									<img src="language/{{ lang.code }}/{{ lang.code }}.png" title="{{ lang.name }}" />
								</span>
								<textarea type="text" name="title[{{ lang.language_id }}]" value="{{ title[lang.language_id] }}"
									class="form-control" rows="6" /></textarea>
							</div>
							{% endfor %}

						</div>
					</div>
				</form>
			</div>
		</div>
	</div>

</div>
{{ footer }}

Прошу помочь! Бьюсь над этой проблемой уже довольно давно.

Змінено користувачем comrues
Надіслати
Поділитися на інших сайтах


6 минут назад, comrues сказал:

Прошу помочь! Бьюсь над этой проблемой уже довольно давно

Посмотрите что пришло в 

$this->request->post

А потом, что выдал validate

Надіслати
Поділитися на інших сайтах

9 минут назад, matroskin92 сказал:

Посмотрите что пришло в 


$this->request->post

А потом, что выдал validate

 

$this->request->post выдаёт следующее:


array(3) {
  ["status"]=>
  string(1) "1"
  ["test"]=>
  array(2) {
    [3]=>
    string(5) "11111"
    [1]=>
    string(6) "111111"
  }
  ["title"]=>
  array(2) {
    [3]=>
    string(6) "111111"
    [1]=>
    string(4) "1111"
  }
}
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at D:\Web\OSPanel\domains\renovatucasa.loc\public_html\admin\controller\extension\module\add_fields2.php:14) in <b>D:\Web\OSPanel\domains\renovatucasa.loc\public_html\system\library\response.php</b> on line <b>36</b>

Т.е. все данные, на сколько я понял выводятся.
А как посмотреть, что выдаёт  validate?

Змінено користувачем comrues
Надіслати
Поділитися на інших сайтах


$this->config->get('module_add_fields2_title')

и так же в шаблоне

 

посмотрите как сделан модуль information например

Надіслати
Поділитися на інших сайтах

В модели идет проверка if (substr($key, 0, strlen($code)) == $code) {

то есть ожидается

'module_add_fields2' плюс ключ, например, status module_add_fields2_status
Надіслати
Поділитися на інших сайтах

1 час назад, spectre сказал:

$this->config->get('module_add_fields2_title')

и так же в шаблоне

 

посмотрите как сделан модуль information например

Да, как раз в этом и была проблема! Спасибо.

Надіслати
Поділитися на інших сайтах


28 минут назад, esculapra сказал:

В модели идет проверка if (substr($key, 0, strlen($code)) == $code) {

то есть ожидается


'module_add_fields2' плюс ключ, например, status module_add_fields2_status

Супер! Спасибо))))

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.