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

Вывод полей «Справочники» на странице объявления

СообщениеДобавлено: 21 фев 2019, 10:45
sdelkadrom
В редакторе форм вывод полей «Справочники» вынесли на вкладку «основное». На странице объявления «Справочники» выводятся на вкладке «основное» в таблице, так же как и остальные поля. Необходимо вывести справочники не в таблице, а в отдельном блоке, под ней, на вкладке «основное». Подскажите, как это сделать?

Re: Вывод полей «Справочники» на странице объявления

СообщениеДобавлено: 21 фев 2019, 13:36
Xpycm
файл themes/навание_темы/views/modules/apartments/views/_tab_general.php

после
Код: Выделить всё
$rows = HFormEditor::getGeneralFields();


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

$referencesFields 
= array();

foreach(
$rows as $key => $tmp) {
    if ($tmp->field == 'references') {
        $referencesFields = $tmp;
        unset($rows[$key]);
        break;
    }
}


в этом же файле выводите где нужно $referencesFields следующим образом:
Код: Выделить всё

if 
(!empty($referencesFields)) {
    HFormEditor::renderViewRows($referencesFields, $data, $isPrintable);
}


Не тестировал, но должно работать.

Re: Вывод полей «Справочники» на странице объявления

СообщениеДобавлено: 21 фев 2019, 18:39
sdelkadrom
Увы... (( Не работает...

Re: Вывод полей «Справочники» на странице объявления

СообщениеДобавлено: 25 фев 2019, 19:10
Xpycm
Вместо
Код: Выделить всё
if (!empty($referencesFields)) {
    
HFormEditor::renderViewRows($referencesFields$data$isPrintable);


Используйте:
Код: Выделить всё
if (!empty($referencesFields)) {
    
HFormEditor::renderViewRows([$referencesFields], $data$isPrintable);


Или, если используется php версии ниже 5.4, то:
Код: Выделить всё
if (!empty($referencesFields)) {
    
HFormEditor::renderViewRows(array($referencesFields), $data$isPrintable);

Re: Вывод полей «Справочники» на странице объявления

СообщениеДобавлено: 25 фев 2019, 19:12
Xpycm
В итоге в файле themes\basis\views\modules\apartments\views\_tab_general.php

У меня такой код:
Код: Выделить всё
<div class="property_info_row">
    <?php
    $isPrintable 
= (isset($isPrintable)) ? $isPrintable false;

    if (
$data->canShowInView('price') && issetModule('seasonalprices') && isset($data->seasonalPrices) && $data->seasonalPrices && $data->type == Apartment::TYPE_RENT) {
        echo 
'<div class="ap-view-seasons-prices">' $this->renderPartial('//modules/seasonalprices/views/_table', array('apartment' => $data'showDeleteButton' => false), true) . '</div>';
    }

    
HFormEditor::$viewRowTemplate '<tr><td><strong>{label}:</strong></td><td>{value}</td></tr>';

    
$rows HFormEditor::getGeneralFields();

    
$referencesFields = array();

    foreach(
$rows as $key => $tmp) {
        if (
$tmp->field == 'references') {
            
$referencesFields $tmp;
            unset(
$rows[$key]);
            break;
        }
    }

    
?>
    <div class="table-responsive">
        <table class="table">
            <tbody>
                <?php
                
if ($data->deleted) {
                    
HFormEditor::renderViewRow('''<span class="deleted">' tt('Listing is deleted''apartments') . '</span>');
                }

                
HFormEditor::renderViewRow(tt('Apartment ID'), $data->id);

                
HFormEditor::renderViewRows($rows$data$isPrintable);

                
?>
            </tbody>
        </table>
    </div>
    <?php if ($data->type == Apartment::TYPE_CHANGE && $data->getStrByLang('exchange_to')): ?>
        <dt><?php echo tt('Exchange to''apartments'); ?>:</dt>
        <dd><?php echo CHtml::encode($data->getStrByLang('exchange_to')); ?></dd>
        <?php
    
endif;
    echo 
'<div class="clear"></div>';

    if (
$data->type == Apartment::TYPE_SALE && param('show_loan_calculator')  && !$isPrintable) {
        
$this->widget('application.modules.loanCalculator.components.LoanCalculatorWidget', array(
            
'amount' => $data->getPriceFrom()
        ));
        echo 
'<div class="clear"></div><br /><br />';
    }

    if (!empty(
$referencesFields)) {
        
HFormEditor::renderViewRows([$referencesFields], $data$isPrintable);
    }

    
?>
</div>


Проверил. Работает