Мудрёный allowEmpty в модели

Поясню ситуацию: есть crud, добавлять данные в нем могут все, редактировать и смотреть - только админы. Надо предлагать капчу только для добавления.

Т.е Надо, чтобы allowEmpty был только в тех случаях, когда Action = Add.

Сейчас примерно такое условие в модели:


array('verifyCode', 'captcha', 'allowEmpty'=>!extension_loaded('gd'), 'captchaAction'=>'/site/captcha',),

Что изменить для соответствия моим требованиям? :unsure:




array('verifyCode', 'captcha', 'allowEmpty'=>!extension_loaded('gd'), 'captchaAction'=>'/site/captcha', 'on' => 'insert'),

Это правильно - задавать условия с именем действия в модели?

on=>insert это не имя действия, а имя сценария. Читайте подробнее в мануале. В двух словах - при создании новой модели ей автоматически присваивается сценарий insert, а при создании модели на основе записи бд - сценарий update. Так что вам будет достаточно этой строки без ручного присовения сценария.

Спасибо большое! ::)

А еще вопрос:

Необходимо узнать кол-во всех записей в таблице.

Это можно сделать так:


$cantidad=count(Users::model()->findAll());

Но выборка всех и подсчет функцией PHP это нерационально. Вопрос - как сделать что-то типа запроса SELECT COUNT(id) для модели?

Используй метод CActiveRecord.count:


Users::model()->count()

Благодарю!!

Не хочется лишних топиков открывать, спрошу тут.

Во вьювере _form.php есть такая строчка:


<?php echo $form->labelEx($model,'username'); ?>

Она выведет




<label for="Users_username" class="required">Ученик [сюда двоеточие] <span class="required">*</span></label>  

Как вставить двоеточие ":" между "Ученик" и <span class="… ?

Это важно для дизайна формы…

Тогда в этом случае в модели:





	public function attributeLabels()

	{

		return array(

			...

			'username' => 'Ученик:',

			...

		);

	}



Тогда в заголовках GridView появляются эти же двоеточия. Есть другие варианты?

http://www.yiiframework.com/doc/api/CHtml#beforeRequiredLabel-detail

Как насчет этого свойства?


<?php echo $form->labelEx($model,'username', array('label'=>'Ученик:')); ?>

или универсальнее:


<?php echo $form->labelEx($model,'username', array('label'=>$model->getAttributeLabel('user_username').':')); ?>

А как юзать это свойство в рамках


<?php echo $form->labelEx($model,'username'); ?>

Пример не могу найти…

Я не юзал, но видно, что это статическое поле, так что: CHtml::$beforeRequiredLabel = ‘:’;

Код из исходников:


$label=self::$beforeRequiredLabel.$label.self::$afterRequiredLabel;