2012-12-02 3 views
0

У меня есть таблица под названием категории:Yii - URL оптимизация mamanement

  • идентификатор
  • category_name
  • PARENT_ID

и настольные продукты:

  • ID
  • category_id
  • product_name

держать вещи простого PRODUCT_NAME и catogory_name является уникальной URL псевдонимов

И я хочу сделать URL, как там

магазин/computer_parts/CPU/Intel - это адрес «Intel» категории, которые имеют родителей центральный процессор и компьютер

и продукты, как

магазин/computer_parts/CPU/Intel/intel_core_i5_2500k - это продукт

Я вижу решение, добавив в методах модели как

Категория модели

public function geturl() { 
    ***in cycle getting aliases of all parents*** 
    return Yii::app()->createUrl(...etc 
} 

и продукт

public function geturl() { 
    *** getting aliases of category and parents *** 
    return Yii::app()->createUrl(...etc 
} 

ли способ сделать это проще?

ответ

0

Сначала установите urlFormat на пути и showScriptName к ложным в основной конфигурации (защищаемой/конфигурации/main.php):

'urlManager'=>array(
    'urlFormat'   => 'path', 
    'showScriptName' => false, 
    'rules'=>array( 
     ... 

Далее необходимо настроить правила для URL-адреса в ваш конфиг, что-то вроде:

shop/<parent:.+>/<child:.+>/<category:.+>/<product:.+> => 'product/view', 
shop/<parent:.+>/<child:.+>/<category:.+>/    => 'product/index', 

это указывает эти два URL-адреса для продукта/вид и продукта/индекс (очевидно, это изменится к тому, что контроллер/действие, вы должны обращаться с каждым из них). Теперь вы сможете получить доступ ко всем переменным GET из URL, так, например:

$product = $_GET['product']; 

Вам придется написать свой контроллер/действие, чтобы определить, какой уровень вы в данный момент в структуре URL и обработать его соответственно.

+0

Нет нет) Я знаю это, я нахожусь на загрузке сервера, когда получаю url для каждого продукта –