изменить содержимое URL на другой контроллер в yii - PullRequest
0 голосов
/ 14 сентября 2011

В моем представлении-> категория-> index.php я показываю названия категорий из таблицы категорий. затем По $ _get ['id'] из cat_id я показываю названия продуктов для определенного идентификатора категории.

Вот код:

$por=product::model()->findAllByAttributes(array('cat_id'=>$_GET['cat_id']));
$list = CHtml::listData($por,'pd_id','product_name');
foreach($list as $value)
echo CHtml::link(CHtml::encode($value),
                 array('showproduct',
                'id'=>$data->pd_id));

Например, если мы имеем в таблице category:

cat_id = 1, cat_name = "nokia"

и в таблице product:

product_id = 1, cat_id = 1, product_name = "N72"
product_id = 2, cat_id = 1, product_name = "N73"

Тогда я могу динамически показывать названия двух продуктов.

я сомневаюсь, как показать функции (из таблицы функций, таблица характеристик имеет категорию и идентификатор продукта в качестве внешних ключей) N72, нажав N72. и как применить ссылку chtml и написать действие, чтобы выполнить это в том же представлении-> категория-> index.php.

пожалуйста, совет!

1 Ответ

0 голосов
/ 14 сентября 2011

Создание нового отношения в модели продукта:

public function relations() {
    ...
    'features' => array(self::HAS_MANY, 'Features', 'product_id')
}

Теперь вы можете использовать $ por-> functions, чтобы получить все функции продукта, но вам придется изменить код с процедурных / массивов на более упорный..

$products = Product::model()->findAllByAttributes(array('cat_id'=>$_GET['cat_id']));
foreach($products as $product) {
    echo CHtml::link(CHtml::encode($product->product_name),
                 array('showproduct',
                'id'=>$product->pd_id));
    foreach ($product->features as $feature)
        echo CHtml::link(CHtml::encode($feature->feature_name),
                 array('features/showfeature',
                'id'=>$feature->ft_id))."\n";
}

Здесь я не знаю вас Структура таблицы функций, поэтому я поместил аналогичные имена столбцов Products.Кроме того, я не знаю, какой другой контроллер вы хотите, чтобы ссылка указывала, поэтому я добавил 'features / showfeature', который является FeatureController и actionShowFeature, как действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...