• Как оформить вывод значений в PHP из разных строк БД без повторений?

    @MikMik
    Твой запрос выдает ровно то же самое что и в моем варианте. Не пойму почему ты решил, что если пользователю напишет новый человек то он не выведется? Если в таблице есть запись то она в любом случае выведется.
    Написано
  • Как сделать, чтобы текст не пропадал, при обновлении страницы?

    @MikMik
    Вообще думаю это лучше сделать через сессию
    Написано
  • Как динамически добавить GridView на страницу?

    @MikMik Автор вопроса
    вью:
    update.php
    <div class="estimate-update">
    
        <h1><?= Html::encode($this->title) ?></h1>
    
        <?= $this->render('_form', [
            'model' => $model,
        ]) ?>
    
        <?php
    
        // echo "<pre>";
        // print_r ($sections);
        // echo "</pre>";
        // die;
        if (!$model->isNewRecord) {
            foreach ($sections as $data) {
                echo $this->render('_section', [
                    'resources' => $data['resources'],
                    'section' => $data['section'],
                    'model' => $model,
                ]);
            }
    
            Pjax::begin(['id' => 'new_estimate_section']);
            
            echo (Html::a('Добавить секцию', [
                'ajax-create-section', 
                'estimate_id' => $model->id], 
                ['class' => 'add-new-section btn btn-primary']));
            
            Pjax::end();
    
            
        }
        ?>
    
    
    </div>


    _section.php
    <?php
    
        Pjax::begin(['id' => 'estimate_section-' . $section->id]);
        ?>
    
        <?= GridView::widget([
            'dataProvider' => $resources,
            'summary' => false,
            'options' => [ 'style' => 'table-layout:fixed;' ],
            'showFooter' => true,
            'placeFooterAfterBody' => true,
            'emptyText' => '',
            'columns' => [
                [
                    'class' => 'yii\grid\CheckboxColumn',
                    'footer' => Icon::show('trash'),
                    'contentOptions' => ['style' => 'width:25px;'],
                ],
                [
                    'attribute' => 'resourceType.short_name',
                    'label' => 'Тип',
                    'contentOptions' => ['style' => 'width:30px;'],
                ],
    
                [
                    'attribute' => 'name',
                    // 'contentOptions' => ['style' => 'width:400px;'],
                    'footer' => Typeahead::widget([
                        'name' => 'twitter_oss',
                        'options' => [
                            'placeholder' => 'Введите название ресурса ...',
                            'autocomplete' => 'off',
                        ],
                        'pluginOptions' => [
                            'hint' => false,
    
                        ],
                        'dataset' => [
                            [
                                'prefetch' => Url::to(['resource-list']),
                                // 'local' => $datas,
                                'datumTokenizer' => "Bloodhound.tokenizers.obj.whitespace('value')",
                                'queryTokenizer' => "Bloodhound.tokenizers.whitespace",
                                'display' => 'value',
                                // 'templates' => [
                                //     'notFound' => '<div class="text-danger" style="padding:0 8px">Unable to find repositories for selected query.</div>',
                                //     'suggestion' => new JsExpression("Handlebars.compile('{$template}')")
                                // ]
                            ]
                        ],
                        'pluginEvents' => [
                            "typeahead:select" => 'function(e, suggestion) {
                                $.ajax({
                                    url: "ajax-add-resource",
                                    data: {
                                        id: suggestion.id, 
                                        section_id:' . $section->id . '}
                                }).done(function(d) {
                                    $("#new_resource_id").select2("close");
                                    $.pjax.reload({container:"#estimate_section-' . $section->id . '"});
                                });
                                console.log(suggestion); }',
                            "typeahead:close" => "function(e, suggestion) { console.log(e.target.value); }",
                        ]
                    ])
                ],
                [
                    'class' => 'app\components\grid\InputColumn',
                    'attribute' => 'quantity',
                    'header' => 'Кол-во',
                    'contentOptions' => ['style' => 'width:60px'],
                ],
                [
                    'attribute' => 'unit.name',
                    'header' => 'Ед.изм',
                    'contentOptions' => ['style' => 'width:60px;'],
                ],
                [
                    'class' => 'app\components\grid\InputColumn',
                    'attribute' => 'price',
                    'header' => 'Цена',
                    'contentOptions' => ['style' => 'width:80px;'],
                ],
                [
                    'attribute' => 'summ',
                    'contentOptions' => ['style' => 'width:80px;'],
                ],
                [
                    'attribute' => 'margin',
                    'contentOptions' => ['style' => 'width:40px;'],
                ],
                [
                    'attribute' => 'price_with_margin',
                    'contentOptions' => ['style' => 'width:80px;'],
                ],
                [
                    'attribute' => 'summ_with_margin',
                    'contentOptions' => ['style' => 'width:80px;'],
                ],
    
            ],
        ]); ?>
    
        <?php Pjax::end() ?>


    _new_section.php
    <?php
        Pjax::begin(['id' => 'estimate_section-' . $section_id]);
        ?>
    
        <?= GridView::widget([
            'dataProvider' => $resources,
            'summary' => false,
            'options' => ['style' => 'table-layout:fixed;'],
            'showFooter' => true,
            'placeFooterAfterBody' => true,
            'emptyText' => '',
            'columns' => [
                [
                    'class' => 'yii\grid\CheckboxColumn',
                    'footer' => Icon::show('trash'),
                    'contentOptions' => ['style' => 'width:25px;'],
                ],
                [
                    'attribute' => 'resourceType.short_name',
                    'label' => 'Тип',
                    'contentOptions' => ['style' => 'width:30px;'],
                ],
    
                [
                    'attribute' => 'name',
                    // 'contentOptions' => ['style' => 'width:400px;'],
                    'footer' => Typeahead::widget([
                        'name' => 'twitter_oss',
                        'options' => [
                            'placeholder' => 'Введите название ресурса ...',
                            'autocomplete' => 'off',
                        ],
                        'pluginOptions' => [
                            'hint' => false,
    
                        ],
                        'dataset' => [
                            [
                                'prefetch' => Url::to(['resource-list']),
                                // 'local' => $datas,
                                'datumTokenizer' => "Bloodhound.tokenizers.obj.whitespace('value')",
                                'queryTokenizer' => "Bloodhound.tokenizers.whitespace",
                                'display' => 'value',
                                // 'templates' => [
                                //     'notFound' => '<div class="text-danger" style="padding:0 8px">Unable to find repositories for selected query.</div>',
                                //     'suggestion' => new JsExpression("Handlebars.compile('{$template}')")
                                // ]
                            ]
                        ],
                        'pluginEvents' => [
                            "typeahead:select" => 'function(e, suggestion) {
                                $.ajax({
                                    url: "ajax-add-resource",
                                    data: {
                                        id: suggestion.id, 
                                        section_id:' . $section_id . '}
                                }).done(function(d) {
                                    $("#new_resource_id").select2("close");
                                    $.pjax.reload({container:"#estimate_section-' . $section_id . '"});
                                });
                                console.log(suggestion); }',
                            "typeahead:close" => "function(e, suggestion) { console.log(e.target.value); }",
                        ]
                    ])
                ],
                [
                    'class' => 'app\components\grid\InputColumn',
                    'attribute' => 'quantity',
                    'header' => 'Кол-во',
                    'contentOptions' => ['style' => 'width:60px'],
                ],
                [
                    'attribute' => 'unit.name',
                    'header' => 'Ед.изм',
                    'contentOptions' => ['style' => 'width:60px;'],
                ],
                [
                    'class' => 'app\components\grid\InputColumn',
                    'attribute' => 'price',
                    'header' => 'Цена',
                    'contentOptions' => ['style' => 'width:80px;'],
                ],
                [
                    'attribute' => 'summ',
                    'contentOptions' => ['style' => 'width:80px;'],
                ],
                [
                    'attribute' => 'margin',
                    'contentOptions' => ['style' => 'width:40px;'],
                ],
                [
                    'attribute' => 'price_with_margin',
                    'contentOptions' => ['style' => 'width:80px;'],
                ],
                [
                    'attribute' => 'summ_with_margin',
                    'contentOptions' => ['style' => 'width:80px;'],
                ],
    
            ],
        ]); ?>
    
        <?php Pjax::end() ?>


    Новая таблица вставляется но взамен кнопки "Добавить секцию". Но это понятно так как она завернута в тот же pjax. Но почему то не работает typeahead.

    Вопросов - как все таки вставить эту таблицу правильно, и чтоб typeahead работал и чтоб кнопка осталась

    Пробовал через JS ее вставлять, но чет мозгов не хватает это сделать.
    Написано
  • Почему не выводятся данные через CONCAT?

    @MikMik Автор вопроса
    Михаил, В том то все и дело, что запрос рабочий, вбиваю его в phpmyadmin все гуд, а вот через AR не работает.
  • Почему не выводятся данные через CONCAT?

    @MikMik Автор вопроса
    Пробовал. Не в этом дело видимо.
  • Как вывести value всех отмеченных checkbox?

    @MikMik
    Попробуй так

    var data = $('input:checkbox:checked');

    Соберет в data все отмеченные чекбоксы
  • Как переписать запрос в ActiveRecord?

    @MikMik Автор вопроса
    Дмитрий, Добрый день!
    И все таки вопрос остался открытым. Сейчас есть другой но аналогичный запрос с подзапросом и на выходе требуется получить именно ActiveRecord, с createCommand() на выходе дает массив.
    Я так вроде все понимаю, как встроить подзапрос, но не пойму как в данном случае написать условие типа a1.campaign_id = a.campaign_id в подзапросе
    Помогите плиз кто-нибудь!
  • Как переписать запрос в ActiveRecord?

    @MikMik Автор вопроса
    Дмитрий, Да я по сути так и сделал. Думал может можно как-то все это безобразие записать через ::find()
  • Почему отображаются две страницы?

    @MikMik Автор вопроса
    При чем помогает только закрытие страницы и повторное ее открытие. Только после этого второй файл исчезает
  • Почему отображаются две страницы?

    @MikMik Автор вопроса
    Daria Motorina, когда обращаешься к php файлам то все норм, сервер обрабатывает их как надо, а вот когда запрос на index.html то иногда вылезает второй файл, при этом нарушается работа JS на странице, а иногда не вылезает...
    Не могу понять зависимость.
  • Почему не выводится значение массива?

    @MikMik Автор вопроса
    function getUserLevels(userAddress) {
                    return new Promise(resolve => {
                        for (var i = 1; i < 9; i++) {
                            contract.methods.viewUserLevelExpired(userAddress, i).call({}, (err, result) => {
                                if (!err) {
                                    levels.push(result);
                                } else {
                                    console.log(err);
                                }
                            })
    
                        }
    
                        resolve(levels);
                    })
                }


    Функция которая заполняет массив. Тут вроде тож все норм...
  • Почему не выводится значение массива?

    @MikMik Автор вопроса
    Не пойму почему в верху (вывод консоли) в [ ] - пусто. Вроде ж массив заполнен?
  • Почему не выводится значение массива?

    @MikMik Автор вопроса
    BD_ l3ftoverZ!, через forEach та же песня (
  • Как отправлять сообщения на дополнительную страницу?

    @MikMik Автор вопроса
    Сделал обмен через постоянное соединение и все заработало. Странно, почему через разовые не работает?
  • Как отправлять сообщения на дополнительную страницу?

    @MikMik Автор вопроса
    Это я все изучил... У меня видимо не в отправке сообщений дело, а в этих асинхронных функциях. Оставил так
    chrome.runtime.onMessage.addListener(
        function (request, sender, sendResponse) {
            if (request.command == "getEventList") {
                    sendResponse({res: 'eventList'});
            }
        }
    )


    и все работает
  • Как получить значение переменной?

    @MikMik Автор вопроса
    Спасибо тебе! Ты спас мой мозг от взрыва ))
    Надо покурить такие варианты.