Страница 1 из 2

Дополнительное поле в Объявлении

СообщениеДобавлено: 09 май 2012, 04:10
zum00t
Здравствуйте, подскажите пожалуйста как добавить дополнительную заполняемую форму (скрин в аттаче) при создании объявления ?
Желательно чтоб вводить в неё мог только Администратор.

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 10 май 2012, 13:24
Koduc
В базе в таблице ore_apartment создать поле типа TEXT, назвать его как надо (например, admin_text).
В /protected/modules/apartments/models/Apartment.php в функции rules() добавить это поле в строку:
Код: Выделить всё
array('admin_text, owner_active, num_of_rooms, is_special_offer, is_free_from, is_free_to, active, metroStations', 'safe'), 

И в функцию attributeLabels() добавить название поля:
Код: Выделить всё
'admin_text' => 'Дополнительное описание',
 

Далее открываем файлик /protected/modules/apartments/views/backend/__form.php и там делаем что-то типа такого:
Код: Выделить всё

<div class="row">
    <?php echo $form->labelEx($model,'berths'); ?>
    <?php echo $form->textField($model,'berths',array('class' => 'width150','maxlength'=>255)); ?>
    <?php echo $form->error($model,'berths'); ?>
</div>
<?php 
if(Yii::app()->user->getState('isAdmin')){
?>
        <div class="row">
            <?php echo $form->labelEx($model,'admin_text'); ?>
            <?php
                $this
->widget('application.modules.editor.EImperaviRedactorWidget',array(
                    'model'=>$model,
                    'attribute'=>'admin_text',

                    'htmlOptions' => array('class' => 'editor_textarea', 'style' => 'width:950px;'),

                    'options'=>array(
                        'toolbar'=>'custom', /*original, classic, mini, */
                        'lang' => Yii::app()->language,
                        'focus' => false,
                    ),
                ));
            ?>
            <?php echo $form->error($model,'admin_text'); ?>
        </div>
<?php
}
?>

Ну и отображение поля надо добавить в /protected/modules/apartments/views/_view.php
Код: Выделить всё

            if
($data->getStrByLang('description_near')){
                echo '<p><strong>'.tt('Near').':</strong> '.CHtml::encode($data->getStrByLang('description_near')).'</p>';
            }
            echo '<b>Дополнительное описание</b>: '.$model->admin_text; 

По аналогии сделать просмотр в модуле viewpdf.
Вроде должно будет работать. Поле будет видно только у админа, но пользователи тоже при некотором навыке "взлома" смогут это поле заполнить. Чтобы такого не было - нужно внести небольшие правки, например, в /protected/modules/userads/controllers/MainController.php в методы actionUpdate() и actionCreate(). Но это уже пусть будет "домашним заданием".

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 10 май 2012, 16:05
zum00t
И так сделал всё в точности как вы изложили. На всякий случай перепроверил.

Поле в БД создал. Через форму оно заполнилось. В базе появились введенные данные.
Но с выводом проблема.

Код: Выделить всё
<b>Дополнительное описание</b>
":

"
 


так отображается в браузере.



UPD:

Нашел в чем был трабл.
Нужно вместо предложенного вами
Код: Выделить всё
 echo '<b>Дополнительное описание</b>: '.$model->admin_text;  


Писать

Код: Выделить всё
echo '<b>Дополнительное описание</b>: '.$data->admin_text; 

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 10 май 2012, 21:20
Koduc
А, ну да;) очепятался

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 11 май 2012, 10:02
zum00t
Огромное спасибо. Не часто разработчики уделяют столько времени рядовым пользователям.

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 11 май 2012, 15:25
Koduc
Спасибо за отзыв! Стараемся по мере возможностей:)

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 29 июн 2012, 11:39
godsha
Напишите пожалуйста подробнее, что нужно писать в viewpdf,чтоб отобразилось доп. поле. Если писать echo '<b>Дополнительное описание</b>: '.$data->admin_text; то выводиться только название поля, а самих данных нет.

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 29 июн 2012, 12:02
Xpycm
А в protected\modules\viewpdf\views\viewpdf.php как раз таки нужно:
Код: Выделить всё

echo 
'<b>Дополнительное описание</b>: '.$model->admin_text;
 

Если откроете оба файла: и protected\modules\viewpdf\views\viewpdf.php, и protected\modules\apartments\views\_view.php, то увидите различия http://clip2net.com/s/24Kex против http://clip2net.com/s/24Kfa соответственно. В одном $model, в другом $data.

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 05 июл 2012, 19:26
Andrey
А как сделать что бы если это поле не заполненно то надпись "Дополнительное описание" не появлялась как "Описание: и Что рядом?"

Re: Дополнительное поле в Объявлении

СообщениеДобавлено: 05 июл 2012, 20:20
Xpycm
Обернуть в условие "if":
Код: Выделить всё
if ($data->admin_text) {
    echo 
'<b>Дополнительное описание</b>: '.$data->admin_text