За последние 24 часа нас посетили 57048 программистов и 1682 робота. Сейчас ищут 1255 программистов ...

Каталог товаров используя mvc

Тема в разделе "PHP для новичков", создана пользователем TigerZaka, 7 ноя 2013.

  1. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Все привет!

    вот чего хочу добиться:

    site.ru/catalog/ - список разделов
    site.ru/catalog/technic/ - список подкатегорий выбранного раздела
    site.ru/catalog/technic/consoles/ - список товаров выбранной подкатегории
    site.ru/catalog/technic/consoles/xbox - страница товара

    контроллер 'catalog' (метод index) получает список разделов с помощью модели.
    Если я выбираю категорию, site.ru/catalog/technic/, не понятно, как правильно обработать technic?
    В моей голове пока один дурацкий вариант, сделать метод technic и кучу остальных методов названных в честь категорий, но я понимаю, что это не правильно.

    Подскажите как правильно использовать динамические данные?
     
  2. noganno

    noganno Новичок

    С нами с:
    26 авг 2013
    Сообщения:
    58
    Симпатии:
    0
    Можно отказаться например от technic когда ты в подкатегории, например, если ты заходишь в site.ru/catalog/technic/consoles/, то у тебя путь будет site.ru/catalog/consoles/, т.е. ты любые подкатегории должен обрабатывать как категории. Ну или у тебя должна быть какая то проверка на родительскую категорию
     
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    /catalog/ это контроллер
    остальные параметры следующие за ним, это динамика. тоесть их надо взять и запросить в БД. т.е.

    site.ru/catalog/ - срабатывает действие index, раз ничего конкретного не запросили, то выбираем товары для Главного меню каталога
    site.ru/catalog/technic/ - выбираем список товаров и категорий, внутри родительской категории technic
    site.ru/catalog/technic/consoles/ - выбираем список товаров и категорий, внутри категории consoles
    site.ru/catalog/technic/consoles/xbox - выбираем список товаров для категории xbox

    все эти древовидные категории и товары должны быть заведены в БД, естественно
     
  4. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    А можно поподробней, вот у меня в файле маршрутов, прописано, что второй url (в данной примере technic) будет методом контроллера catalog.
    Как мне сделать, чтобы код не искал несуществующий метод, а воспринимал данные,.. ну как аргумент index-метода?

    вот так я урл'ы разбираю, мне нужно здесь изменить подход или можно непосредственно в контроллере?
    Код (Text):
    1.  
    2. $url = isset($_GET ['url']) ? $_GET['url'] : null;
    3. $url = rtrim ( $url, '/' );
    4. $url = explode ( '/', $url );
    5.        
    6.         if(empty($url[0])) {
    7.             require 'controllers/index.php';
    8.             $controller = new Index();
    9.            
    10.             $controller->index();
    11.             return false;
    12.         }
    13.        
    14.         $file = 'controllers/' . $url [0] . '.php';
    15.         if(file_exists($file)) { require $file; }
    16.                 else { $this->error(); }
    17.        
    18.         $controller = new $url[0];
    19.         $controller->loadModel($url[0]);
    20.  
    21.         if (isset ( $url [2] )) {
    22.             if(method_exists($controller, $url[1])) {
    23.                 $controller->{$url [1]} ( $url [2] ); // аналог $controller->function()
    24.             } else { $this->error(); }
    25.         } else {
    26.             if (isset ( $url [1] )) {
    27.                 if(method_exists($controller, $url[1])) {
    28.                     $controller->{$url [1]} ();
    29.                 } else { $this->error(); }
    30.             } else { $controller->index(); }
    31.         }
    Тыкните плз )
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Странно, я не понимаю ((( можешь сформулировать вопрос иначе?
     
  6. noganno

    noganno Новичок

    С нами с:
    26 авг 2013
    Сообщения:
    58
    Симпатии:
    0
    Ну например в фреймфорках это уже готово, ты пишешь просто правила для путей, если у тебя что то самописное, тогда парсишь урл на переменные и пытаешься сам составить правило обработки пути.