В index.php:
<?php
session_start(); // стартуем сессию
// если в сессии нет массива корзины то создаем его
if(!isset($_SESSION['cart'])){
$_SESSION['cart'] = array();
}
include_once 'config/config.php'; // Инициализация настроек
include_once 'config/db.php'; // Инициализация БД
include_once 'library/mainFunctions.php'; // Основные функции
// определяем с каким контроллером будем работать
$controllerName = isset($_GET['controller']) ? ucfirst($_GET['controller']) : 'Index';
// определяем с какой функцией будем работать
$actionName = isset($_GET['action']) ? $_GET['action'] : 'index';
// инициализируем переменную шаблонизатора количества элементов в корзине
$smarty->assign('cartCntItems', count($_SESSION['cart']));
loadPage($smarty, $controllerName, $actionName);
В контроллере:
<?php
/**
* cartController.php
*
* Контроллер работы с корзиной (/cart/)
*
*/
// подключаем модели
include_once 'models/CategoriesModel.php';
include_once 'models/ProductsModel.php';
/**
* Добавление продукта в корзину
*
* @param integer id GET параметр - ID добавляемого продукта
* @return json информация об операции (успех, количество элементов в корзине)
*/
function addtocartAction(){
$itemId = isset($_GET['id']) ? intval($_GET['id']) : null;
if(!$itemId) return false;
$resData = array();
// если значение не найдено, то добавляем
if(isset($_SESSIOIN['cart']) && array_search($itemId, $_SESSIOIN['cart']) === false){
$_SESSIOIN['cart'][] = $itemId;
$resData['cntItems'] = count($_SESSIOIN['cart']);
$resData['success'] = 1;
} else {
$resData['success'] = 0;
}
echo json_encode($resData);
}
В представлении:
<div id="leftColumn">
<div id="leftMenu">
<div class="menuCaption">Меню:</div>
{foreach $rsCategories as $item}
<a href="/?controller=category&id={$item['id']}">{$item['name']}</a><br />
{if isset($item['children'])}
{foreach $item['children'] as $itemChild}
--<a href="/?controller=category&id={$itemChild['id']}">{$itemChild['name']}</a><br />
{/foreach}
{/if}
{/foreach}
</div>
<div id="menuCaption">Корзина</div>
<a href="/cart/" title="Перейти в корзину">В корзине</a>
<span id="cartCntItems">
{if $cartCntItems > 0}{$cartCntItems}{else}пусто{/if}
</span>
</div>
В main.js:
/**
* Функция добавления товара в корзину
*
* @param integer itemId ID продукта
* @return в случае успеха обновлятся данные корзины на странице
*/
function addToCart(itemId){
console.log("js - addToCart()");
$.ajax({
type: 'POST',
async: false,
url: "/cart/addtocart/" + itemId + '/',
dataType: 'json',
success: function(data){
if(data['success']){
$('#cartCntItems').html(data['cntItems']);
$('#addCart_' + itemId).hide();
$('#removeCart_' + itemId).show();
}
}
});
}
В .htaccess:
AddDefaultCharset UTF-8
Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)/$ /?controller=$1&action=$2&id=$3&%{QUERY_STRING} [NS,L]
RewriteRule ^([a-z]+)/([a-z]+)/$ /?controller=$1&action=$2&%{QUERY_STRING} [NS,L]
RewriteRule ^([a-z]+)/([0-9]+)/$ ?controller=$1&id=$2&%{QUERY_STRING} [NS,L]
RewriteCond $1 !^(index\.php)
RewriteCond %{REQUEST_URI} !\.(css|js|jpg|gif)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Результаты:
1) Как вы видите здесь все нормально!
2) Но, при вызове функции нажатием на "Добавить в корзину" происходит следующее:
Как это исправить чтобы приходил запрос?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
База данных postgresql установлена на одном сервереPHP установлена на другом сервере
Отправлялись данные из формы на сервер с помощью php и добавлялись в бд, после того как попытался отправить данные через Ajax, они не приходят...
Предположим есть шаблон layoutblade