добавить поле "площадь за м. кв."

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

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

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

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

добавить поле "площадь за м. кв."

Сообщение tryuk » 12 июн 2013, 10:41

Добрый день. У меня версия 1.4.3. Есть общая площадь при добавлении объявления, но нужно еще одно отдельное поле "площадь за квадратный метр" при аренде помещения. Подскажите пожалуйста, как добавить еще одно поле площади при добавлении объявления, и что бы оно так же выводилось при самом показе объявления. Спасибо.
tryuk
Незнакомец
 
Сообщения: 8
Зарегистрирован: 11 июн 2013, 13:24
Очки репутации: 0

Re: добавить поле "площадь за м. кв."

Сообщение Xpycm » 12 июн 2013, 14:01

"площадь за квадратный метр"? Это что-то новенькое. Но пусть будет так.

В базе в таблице {prefix}apartment создать поле типа mediumint, назвать его как надо (например, square_per_metr).

В /protected/modules/apartments/models/Apartment.php в функции rules() добавить это поле в строку:
Код: Выделить всё
array('square_per_metr, in_currency, owner_active, num_of_rooms, is_special_offer, is_free_from, is_free_to, active, metroStations''safe'), 


если это будет только число, то в функции rules() указать валидатор на ввод исключительно числа - http://yiiframework.ru/doc/cookbook/ru/ ... .reference. Но это будет домашним заданием.

В функцию attributeLabels() добавить название поля:
Код: Выделить всё
'square_per_metr' => 'Площадь за квадратный метр'


Далее открываем файлик /protected/modules/apartments/views/backend/__form.php после:
Код: Выделить всё
<?php if ($model->type == Apartment::TYPE_SALE || $model->type == Apartment::TYPE_BUY) { ?>
<div class="rowold">
    <?php echo $form->labelEx($model'square'); ?>
    <?php echo $form->textField($model'square', array('size' => 10)); ?>
    <?php echo $form->error($model'square'); ?>
</div>
<?php ?>


вставляем:
Код: Выделить всё
<?php if($model->type == Apartment::TYPE_RENT) : ?>
<div class="rowold">
    <?php echo $form->labelEx($model'square_per_metr'); ?>
    <?php echo $form->textField($model'square_per_metr', array('size' => 10)); ?>
    <?php echo $form->error($model'square_per_metr'); ?>
</div>
<?php endif; ?>


Ну и отображение поля надо добавить в /protected/modules/apartments/views/_view.php.
До:
Код: Выделить всё
if($data->getStrByLang('description_near')){
    echo 
'<p><strong>'.tt('Near').':</strong> '.CHtml::encode($data->getStrByLang('description_near')).'</p>';


Вставить:
Код: Выделить всё
if($data->type == Apartment::TYPE_RENT && $data->square_per_metr) {
    echo 
'<p><strong>Площадь за квадратный метр:</strong> '.CHtml::encode($data->square_per_metr).'</p>';


+ вывод вставить в файл protected/modules/apartments/views/view_print.php (версия для печати) только в этом файле объект называется не $data, а $model. Сложностей возникнуть не должно.
Добавление вывода в файл protected/modules/apartments/views/view_print.php также оставляю на "домашнее задание"
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: добавить поле "площадь за м. кв."

Сообщение tryuk » 12 июн 2013, 14:32

Ой, прошу прощения. Площадь жилая имелась ввиду. Понял как сделать, спасибо большое!!!
И еще один вопрос пожалуйста, добавить цену за квадратный метр (;
То есть что бы было при аренде цена за квадратный метр и общая цена выводились.
Еще раз извините за ошибку.
tryuk
Незнакомец
 
Сообщения: 8
Зарегистрирован: 11 июн 2013, 13:24
Очки репутации: 0

Re: добавить поле "площадь за м. кв."

Сообщение Xpycm » 12 июн 2013, 14:40

Да ничего страшного, наверное торопились. Но читается с юмором, да :-)

Цену за квадратный метр Вы можете сделать по такой же аналогии
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: добавить поле "площадь за м. кв."

Сообщение Xpycm » 12 июн 2013, 14:45

Вот Вам несколько ссылок в помощь добавления полей на форму, вывода, валидации
http://www.yiiframework.com/doc/guide/1.1/ru/form.view
http://sectronov.blogspot.ru/2011/02/yii.html
http://www.dbhelp.ru/yii-form-validation/page/
http://yiiframework.ru/doc/cookbook/ru/ ... .reference

На самом деле Yii фреймворк не такой уж и сложный. Но "точка входа в него" требует знаний PHP не на уровне "прочитал одну книжку по PHP".
Зато, если проникнитесь, сможете реализовывать функционал в разы быстрее и качественнее нежели на "чистом PHP".
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: добавить поле "площадь за м. кв."

Сообщение tryuk » 12 июн 2013, 14:51

Еще раз спасибо Вам большое за ответ и полезные ссылки!!!
tryuk
Незнакомец
 
Сообщения: 8
Зарегистрирован: 11 июн 2013, 13:24
Очки репутации: 0

Re: добавить поле "площадь за м. кв."

Сообщение tryuk » 12 июн 2013, 16:02

Что-то у меня не получается.
В базе в таблице ore_apartment создал поле Изображение

В /protected/modules/apartments/models/Apartment.php в функцию attributeLabels() добавил название поля:
Код: Выделить всё
public function attributeLabels() {
        return array(
            'id' => tt('ID', 'apartments'),
                        'type' => tt('Type', 'apartments'),
            'price' => tt('Price', 'apartments'),
            'num_of_rooms' => tt('Number of rooms', 'apartments'),
            'floor' => tt('Floor', 'apartments'),
            'floor_total' => tt('Total number of floors', 'apartments'),
            'square' => tt('Square', 'apartments'),
            'square_per_metr' => tt('Жилая площадь'),
            'window_to' => tt('Window to', 'apartments'), 


В /protected/modules/apartments/models/Apartment.php в функции rules() добавил так же:
Код: Выделить всё
public function rules() {
        return array(
            //array('price', 'required'),
            //array('price ', 'numerical', 'min' => 1),
            array('price', 'priceValidator'),
            array('title', 'i18nRequired'),
            array('price, price_to, floor, floor_total, square, window_to, type, price_type, obj_type_id, city_id', 'numerical', 'integerOnly' => true),
            array('price_to', 'priceToValidator'),
            array('berths', 'length', 'max' => 255),
            array('title', 'i18nLength', 'max' => 255),
            array('lat, lng', 'length', 'max' => 25),
            array('id', 'safe', 'on' => 'search'),
            array('floor', 'myFloorValidator'),
            array('is_price_poa', 'boolean'),
            array('square_per_metr, in_currency, owner_active, num_of_rooms, is_special_offer, is_free_from, is_free_to, active, metroStations', 'safe'),
            array($this->getI18nFieldSafe(), 'safe'),
            array('city_id, owner_active, active, type, ownerEmail', 'safe', 'on' => 'search'),
        );
    } 


/protected/modules/apartments/views/backend/__form.php после
Код: Выделить всё
<div class="rowold">
        <?php echo $form->labelEx($model, 'square'); ?>
        <?php echo $form->textField($model, 'square', array('size' => 10)); ?>
        <?php echo $form->error($model, 'square'); ?>
    </div>

добавил
Код: Выделить всё
<div class="rowold">
        <?php echo $form->labelEx($model, 'square_per_metr'); ?>
        <?php echo $form->textField($model, 'square_per_metr', array('size' => 10)); ?>
        <?php echo $form->error($model, 'square_per_metr'); ?>
    </div>

Полный текст файла __form.php http://hash.su/7715

Для отображения в /protected/modules/apartments/views/_view.php перед текстом:
Код: Выделить всё
if($data->getStrByLang('description_near')){
                echo '<p><strong>'.tt('Near').':</strong> '.CHtml::encode($data->getStrByLang('description_near')).'</p>';
            } 

вставил:
Код: Выделить всё
if($data->type == Apartment::TYPE_RENT && $data->square_per_metr) {
                echo '<p><strong>Жилая площадь:</strong> '.CHtml::encode($data->square_per_metr).'</p>';
            }  

И вывод вставил в версии для печати (скорее всего не верно) в protected/modules/apartments/views/view_print.php
Код: Выделить всё
if ($model->square) {
                                    $echo[] = Yii::t('module_apartments', 'total square: {n}', $model->square).' '.CHtml::decode(param('site_square', 'м<sup>2</sup>'));
                                }
                                if ($model->square_per_metr) {
                                    $echo[] = Yii::t('module_apartments', 'total square_per_metr: {n}', $model->square_per_metr).' '.CHtml::decode(param('site_square_per_metr', 'м<sup>2</sup>'));
                                } 


Отображается "Жилая площадь" в админке при добавлении об]явления, но почему-то не отображается после сохранения на самом сайте.
Подскажите пожалуйста, где допустил ошибку (;
tryuk
Незнакомец
 
Сообщения: 8
Зарегистрирован: 11 июн 2013, 13:24
Очки репутации: 0

Re: добавить поле "площадь за м. кв."

Сообщение Xpycm » 12 июн 2013, 16:10

Вы писали в первом посте: "при аренде". Соотвественно, я добавил условия: model->type == Apartment::TYPE_RENT

Если убираете условие при добавлении объявления:
Код: Выделить всё
<?php if($model->type == Apartment::TYPE_RENT) : ?>


то убирайте и при просмотре:
Код: Выделить всё
if($data->type == Apartment::TYPE_RENT && $data->square_per_metr) { 
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: добавить поле "площадь за м. кв."

Сообщение tryuk » 12 июн 2013, 16:44

Все, понял. Спасибо большое еще раз за помощь и разъеснения!
tryuk
Незнакомец
 
Сообщения: 8
Зарегистрирован: 11 июн 2013, 13:24
Очки репутации: 0

Re: добавить поле "площадь за м. кв."

Сообщение tryuk » 14 июн 2013, 11:49

Доброе утро. Прошу прощения за нубский вопрос, но у меня не получается почему-то сделать вывод "Жилая площадь" в "продаже" недвижимости. Подскажите, пожалуйста, подробней, где и что в каком файле менять, что б знал на будущее. Спасибо большое заранее.
И еще дополнительный вопрос: как сделать например в "Обратная связь" поле для заполнения "Телефон" обязательным.
tryuk
Незнакомец
 
Сообщения: 8
Зарегистрирован: 11 июн 2013, 13:24
Очки репутации: 0

След.

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

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

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