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

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

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

Сообщение zum00t » 09 май 2012, 04:10

Здравствуйте, подскажите пожалуйста как добавить дополнительную заполняемую форму (скрин в аттаче) при создании объявления ?
Желательно чтоб вводить в неё мог только Администратор.
Вложения
form.jpg
form.jpg (26.27 КБ) Просмотров: 11851
zum00t
Незнакомец
 
Сообщения: 7
Зарегистрирован: 04 май 2012, 18:39
Очки репутации: 0

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

Сообщение Koduc » 10 май 2012, 13:24

В базе в таблице 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(). Но это уже пусть будет "домашним заданием".
-- Меньше знаешь - крепче спишь --
Аватара пользователя
Koduc
Ведущий разработчик
Ведущий разработчик
 
Сообщения: 902
Зарегистрирован: 28 дек 2011, 09:11
Очки репутации: 20

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

Сообщение zum00t » 10 май 2012, 16:05

И так сделал всё в точности как вы изложили. На всякий случай перепроверил.

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

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

"
 


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



UPD:

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


Писать

Код: Выделить всё
echo '<b>Дополнительное описание</b>: '.$data->admin_text; 
zum00t
Незнакомец
 
Сообщения: 7
Зарегистрирован: 04 май 2012, 18:39
Очки репутации: 0

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

Сообщение Koduc » 10 май 2012, 21:20

А, ну да;) очепятался
-- Меньше знаешь - крепче спишь --
Аватара пользователя
Koduc
Ведущий разработчик
Ведущий разработчик
 
Сообщения: 902
Зарегистрирован: 28 дек 2011, 09:11
Очки репутации: 20

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

Сообщение zum00t » 11 май 2012, 10:02

Огромное спасибо. Не часто разработчики уделяют столько времени рядовым пользователям.
zum00t
Незнакомец
 
Сообщения: 7
Зарегистрирован: 04 май 2012, 18:39
Очки репутации: 0

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

Сообщение Koduc » 11 май 2012, 15:25

Спасибо за отзыв! Стараемся по мере возможностей:)
-- Меньше знаешь - крепче спишь --
Аватара пользователя
Koduc
Ведущий разработчик
Ведущий разработчик
 
Сообщения: 902
Зарегистрирован: 28 дек 2011, 09:11
Очки репутации: 20

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

Сообщение godsha » 29 июн 2012, 11:39

Напишите пожалуйста подробнее, что нужно писать в viewpdf,чтоб отобразилось доп. поле. Если писать echo '<b>Дополнительное описание</b>: '.$data->admin_text; то выводиться только название поля, а самих данных нет.
kcn43.ru
godsha
Незнакомец
 
Сообщения: 8
Зарегистрирован: 16 июн 2012, 13:28
Очки репутации: 0

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

Сообщение Xpycm » 29 июн 2012, 12:02

А в 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.
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

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

Сообщение Andrey » 05 июл 2012, 19:26

А как сделать что бы если это поле не заполненно то надпись "Дополнительное описание" не появлялась как "Описание: и Что рядом?"
Andrey
Незнакомец
 
Сообщения: 2
Зарегистрирован: 05 июл 2012, 17:50
Очки репутации: 0

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

Сообщение Xpycm » 05 июл 2012, 20:20

Обернуть в условие "if":
Код: Выделить всё
if ($data->admin_text) {
    echo 
'<b>Дополнительное описание</b>: '.$data->admin_text
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

След.

Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

cron