activeLabelEx

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

activeLabelEx

Сообщение kosenka »

Натолкнулся тут, видимо, на ошибку:

activeLabelEx($model,'txt_title'); http://www.yiiframework.com/doc/api/CHt ... lEx-detail
Там написано, что "если поле required, то оно помечается *"

Есть правило:

Код: Выделить всё

    public function rules()
    {
        return array(
                array('txt_title','required'),
                array('txt_title','length','max'=>250),
                        );
    }
 
и при выводе через

Код: Выделить всё

<? echo CHtml::activeLabelEx($model,'txt_title'); ?>
получаем: txt_title *

но если задать такое правило:

Код: Выделить всё

    public function rules()
    {
        return array(
                array('txt_title','required','on'=>'create'),
                array('txt_title','length','max'=>250),
                        );
    }
 
то "звездочки" после названия поля уже нет.
Может я что-то упустил?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: activeLabelEx

Сообщение samdark »

Сценарий текущий create?
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

Re: activeLabelEx

Сообщение kosenka »

Sam Dark писал(а):Сценарий текущий create?
Я еще немножко путаюсь в yii...

Есть вот такая функция:

Код: Выделить всё

    public function actionCreate()
    {
        $model=new Items;
        if(isset($_POST['Items']))
        {
                        $model->attributes=$_POST['Items'];

                        if($model->validate('create')) //<-- это указывает на "сценарий"?
                        {
                                if($model->save())
                                {
                                        $this->redirect(array('show','id'=>$model->id));
                                }
                        }
        }
        $this->render('create',array('model'=>$model));
    }
 
Или нужно установить "сценарий" до рендера?
Аватара пользователя
Ozzy
Сообщения: 269
Зарегистрирован: 2009.04.02, 15:09
Откуда: Украина, Одесса

Re: activeLabelEx

Сообщение Ozzy »

Перед строчкой:

Код: Выделить всё

if($model->validate('create')) 
напиши

Код: Выделить всё

$model->scenario="create"; 
Мой маленький блог - http://dbhelp.ru
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

Re: activeLabelEx

Сообщение kosenka »

Ozzy писал(а):Перед строчкой:

Код: Выделить всё

if($model->validate('create')) 
напиши

Код: Выделить всё

$model->scenario="create"; 
Спасибо.

А можно ли как-то указать, что "сценарий" = "action" по умолчанию ?
Т.е. есть: actionCreate и пусть и "сценарий" тоже был "create".
Аватара пользователя
delvin
Сообщения: 85
Зарегистрирован: 2009.11.13, 15:29

Можно

Сообщение delvin »

Можно. Наверно можно сделать и для всех моделей, но я как-то об этом не думал.
Делаешь расширение для нужного типа модели, например для CActiveRecord создаешь CActiveRecordExt.php в каталоге components

Код: Выделить всё

<?
class CActiveRecordExt extends CActiveRecord {
    public function init(){
        parent::init();
        $this->scenario = Yii::app()->controller->action->id;
    }
} 
А все свои модели наследуешь от этого класса, например

Код: Выделить всё

class Page extends CActiveRecordExt {
...
} 
Ответить