Cmenu

Модель


   public static function menu()

    {

        $categories = self::model()->findAll();

        

        $array = array();


        foreach ($categories as $category)

        {

            $count = Film::model()->count('category_id = :category_id',array(':category_id'=>$category->id));

            $array[] = array('label'=>$category->name.' ['.$count.']', 'url'=>array('film/genre/id/'.$category->id));

        }

        return $array;

    } 

Ну и в сайдбаре выводится


			<?php

				$this->beginWidget('zii.widgets.CPortlet', array(

					'title'=>'Категории',

				));

				$this->widget('zii.widgets.CMenu', array(

					'items'=>Category::menu(),

					'htmlOptions'=>array(

                        'class'=>'operations'

                    ),

				));

				$this->endWidget();

			?>

Никак не соображу как вывести количество ссылок в виде текста, а не ссылки. Еще тут вроде запрос кривой, в цикле, думаю есть более продуктивный способ

Еще 2 мелких вопрос:

  1. Для чего в контроллере сгенерированном через груд метод performAjaxValidation?

  2. Как убрать * с обязательных полей

  1. Этот метод над раскомментировать если используется Ajax проверка

  2. У нужной модели в функции rules для нужных полей убери проверку на required

по поводу первого вопроса

label - это внутренняя часть ссылки <a>label тут</a> если задан параметр url zii.widgets.CMenu

если не задавать параметр url то там формируются в виде span-ов

то есть в принципе через label можно передать хтмл то есть вывести пункт меню так как тебе нужно либо нужно создавать новый виджет на основе zii.widgets.CMenu и с изменённой функцией renderMenuItem так как тебе нужно!

Если вы хотите оставить проверку на обязательность заполнения поля, но убрать "*", то нужно вместо $form->labelEx использовать $form->label

Как то так:




...

$this->widget('zii.widgets.CMenu',array(

    'encodeLabel'=>false,

...

),



и




$array[] = array('label'=>'<a href="...">'.$category->name.'</a>'.' ['.$count.']', 'url'=>array('film/genre/id/'.$category->id));




Ага, только что сделал $array[] = array('label'=>CHtml::link($category->name,'film/genre/id/'.$category->id).' ['.$count.']');