Перейти к содержанию

Рекомендуемые сообщения

Привет всем.

Хочу создать на странице с продуктами свою форму. При клике открывается модальная форма, заполнять и подтвердить. При этом должен пойти инсерт в базу и в админ панельке создать страницу для этих запросов. Все могу легко реализовать в PHP, но не знаю как сделать на opencart. Какой метод использовать? Ajax-ом посылать или методом POST? 
В catalog/view/theme/my_theme_name/template/product/product.twig уже написал форму. Что нужно сделать дальше? Где делать коннекшион к базе данных, инсерт и в конце вывести что все удачно?
 

<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

<div class="modal fade" id="myModal" role="dialog">
	<div class="modal-dialog">
		<div class="modal-content">
			<div class="modal-header">
			<button type="button" class="close" data-dismiss="modal">&times;</button>
			<h4 class="modal-title">Modal Header</h4>
			</div>
			<div class="modal-body">
				<form class="form-horizontal" action="what_to do here? :)">
					<div class="form-group">
						<label class="control-label col-sm-2" for="name">First Name:</label>
						<div class="col-sm-10">
							<input type="text" class="form-control" id="name" placeholder="Enter password" name="name">
						</div>
					</div>
					<div class="form-group">        
						<div class="col-sm-offset-2 col-sm-10">
							<button type="submit" class="btn btn-default">Submit</button>
						</div>
					</div>
				</form>
			</div>
			<div class="modal-footer">
				<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
			</div>
		</div>
	</div>
</div>

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

структура

ajax или не ajax - это на усмотрение ваше, как карта позволяет.

Собственно вроде все )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@anboza спасибо за ответ. Структуру читал, на MVC и opencart новенький, думал может есть примерчик маленький, что бы быстрее научиться. Читать и самому пробовать сделать, конечно эффективней для полного понятия структуры до корней, но нету столько много времени для этого.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
39 минут назад, Orkh3ll0 сказал:

Все могу легко реализовать в PHP

 

ну так записывайте в свою таблицу. Все правила php работают. 

или в чем вопрос?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@anboza Обычно я акшион отправляю на какую то страницу и на этой странице пишу
 

İf(isset($_POST["something"]))
{
do something;
}

 

А тут все запутанней, сейчас пытаюсь понять по файлам edit, как тут все устроено

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите как комментарии к товарам сделаны - это и есть хороший пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, Orkh3ll0 сказал:

думал может есть примерчик маленький

 

Весь движок - большой сплошной пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делал по примеру контактов, главное обыграть перенаправления, когда сообщение отправлено или ошибка отправки.

Спойлер

<script type="text/javascript"><!--

// открываем окно формы, когда есть ошибка заполнения
<?php if ($error_name || $error_email || $error_address) { ?>
    $('#sisa-from').modal('show');
<?php } ?>
// если имеем на конце ссылки #boc_success - открываем окно о том, что сообщение отправлено и убираем с конца ссылки #boc_success, чтобы больше не открывалось окно
var url = document.location.toString();
if (url.match('#boc_success')) {
   $('#boc_success').modal('show');
   history.pushState(null, null, '<?php echo $action; ?>');
}
//--></script>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе люди, пожалуйста помогите найти  ошибку. На примере других форм сделал свое.

Это форм, который находится в файле "catalog/view/theme/my_theme_name/template/productproduct.twig"

<form class="form-horizontal" enctype="multipart/form-data" id="form-kredit">
	<div id="kredits"></div>
	<div class="form-group">
		<label class="control-label col-sm-2" for="myname">First Name:</label>
		<div class="col-sm-10">
			<input type="text" class="form-control" id="myname" placeholder="Enter Name"  name="myname">
		</div>
	</div>
	<div class="form-group">        
	<div class="col-sm-offset-2 col-sm-10">
		<button type="button" id="submit_kredit" data-loading-text="{{ text_loading }}" class="btn btn-primary">{{ button_continue }}</button>
		</div>
	</div>
</form>

 

Это Ajax, находится в том же файле"catalog/view/theme/my_theme_name/template/productproduct.twig"
 

$('#kredits').delegate('.pagination a', 'click', function(e) {
	e.preventDefault();
	
	$('#kredits').fadeOut('slow');
	
	$('#kredits').load(this.href);
	
		$('#kredits').fadeIn('slow');
	});

	$('#kredits').load('index.php?route=product/product/kredit&product_id={{ product_id }}');
	
	$('#submit_kredit').on('click', function() {
		$.ajax({
			url: 'index.php?route=product/product/kredits&product_id={{ product_id }}',
			type: 'post',
			dataType: 'json',
			data: $("#form-kredit").serialize(),
			beforeSend: function() {
				$('#submit_kredit').button('loading');
			},
			complete: function() {
				$('#submit_kredit').button('reset');
			},
			success: function(json) {
				$('.alert-dismissible').remove();
	
				if (json['error']) {
					$('#kredits').after('<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + '</div>');
				}
	
				if (json['success']) {
					$('#kredits').after('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + '</div>');
	
					$('input[name=\'myname\']').val('');
				}
			}
		});
	});

 

Это контроллер "catalog/controller/product/product.php"

public function kredit() {
		$this->load->language('product/product');

		$json = array();

		if ($this->request->server['REQUEST_METHOD'] == 'POST') {
			if (utf8_strlen($this->request->post['myname'])) {
				$json['error'] = $this->language->get('error_name');
			}

			if (!isset($json['error'])) {
				$this->load->model('catalog/kredit');

				$this->model_catalog_kredit->addKredit($this->request->get['product_id'], $this->request->post);

				$json['success'] = $this->language->get('text_success');
			}
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}

 

А это часть модели файл находится в "catalog/model/catalog/kredit.php"

<?php
class ModelCatalogKredit extends Model {
	public function addKredit($product_id, $data) 
	{
		$this->db->query("UPDATE " . DB_PREFIX . "product SET kredit_status = 1 where product_id = '" . (int)$product_id . "'");
	}
}

 

Создать в бд колумн и хочу его обновить и этим проверить правильно ли построил.Но не обновляется, к тому же выводится ошибка что минимум 3 буквы и макс 25, хотя у меня не стоят такие ограничение. Доброе люди, пожалуйста помогите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Orkh3ll0

url: 'index.php?route=product/product/kredits&product_id={{ product_id }}',

>>>>

url: 'index.php?route=product/product/kredit&product_id={{ product_id }}',

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@shoputils После поста проверил, нашел и исправил это, но опять не работает. Что еще может это быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.