Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

Николай Громов

Начинающий
  • 0
    вклад
  • 38
    вопросов
  • 6
    ответов
  • 17%
    решений
Комментарии
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Как добавить class = "active" к активному элементу меню?

    Николай Громов @T_verdisla_V Автор вопроса
    Антон Шаманов, Во всех других контроллерах (отвечающих за другие страницы) есть строка определения id из адресной строки
    function indexAction($smarty){
    
        $itemId = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) ? filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) : null;
        if (!$itemId) {
            exit ();
        }
    
        $menu = getItemsMenu();
        $itemMenu = getMenuByMenuId($itemId);
        $thumbProjects = $itemMenu->ownThumbprojectList;
        $devices = $itemMenu->ownDeviceList;
    
        $smarty->assign('itemId', $itemId);
        $smarty->assign('menu', $menu);
        $smarty->assign('itemMenu', $itemMenu);
        $smarty->assign('devices', $devices);
        $smarty->assign('thumbProjects', $thumbProjects);
        $smarty->assign('pageTitle', 'ТМТ Энерго - АСУ ТП');
    
        loadTemplate($smarty, 'header');
        loadTemplate($smarty, 'asutpIndex');
        loadTemplate($smarty, 'footer');
    }

    я добавил вывод $itemId шаблон
    $smarty->assign('itemId', $itemId);
    и в шаблоне добавил такую проверку
    <li class="nav-item m-auto {if $item->id == $itemId}active{/if} ">

    Но в контроллере главной страницы нет определения id, и соответственно даже если добавить эту строку в контроллер главной страницы
    $itemId = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) ? filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) : null;
        if (!$itemId) {
            exit ();
        }

    он возвращает мне NULL и соответственно ничего не выводит. Как быть с главной страницей?
    Написано более трёх лет назад
  • Как добавить class = "active" к активному элементу меню?

    Николай Громов @T_verdisla_V Автор вопроса
    Антон Шаманов,
    я же говорю {if $item->isActive} это проверка, выводить сам элемент меню или нет. В БД есть пункты меню которые выводить пока не надо. Так что этот вариант не подойдет.
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload, Получается в основном js?
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload, нет, он не нужен. Огромное спасибо. Вы только на js специализируетесь или php тоже?
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload, может тогда это условие
    if(!itemIsActive){
            itemIsActive = 1;
        } else {
            itemIsActive = 0;
        }

    вообще убрать?
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload,
    Есть такой чекбокс.
    <input class="form-check-input forMenu" type="checkbox" id="itemIsActive_{$item->id}" {if $item->is_active == 0} checked="checked" {/if} />


    он среди прочих обрабатывается js

    function updateMenu(itemId){
        var itemLabel = $('#itemLabel_' + itemId).val();
        var itemUrl = $('#itemUrl_' + itemId).val();
        var itemIsActive = $('#itemIsActive_' + itemId).val();
        var itemDescription = $('#itemDescription_' + itemId).val();
        if(!itemIsActive){
            itemIsActive = 1;
        } else {
            itemIsActive = 0;
        }
        var postData = {itemId: itemId, itemLabel: itemLabel, itemUrl: itemUrl,
            itemIsActive: itemIsActive, itemDescription:itemDescription};
        $.ajax({
            type: 'POST',
            async: true,
            url: "/admin/updatemenu/",
            data: postData,
            dataType: 'json',
            success: function(data){
                if(data['success']){
                    alert(data['message']);
                } else {
                    alert(data['message']);
                }
            }
        });
    }

    как его можно переделать что бы он передавал или 0 или 1, в зависимости от того стоит галочка или нет. Сейчас он передает одно значение невзирая на галочку.
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload, Здравствуйте. Не могли бы вы ответить еще на один похожий вопрос?
    Написано более трёх лет назад
  • Почему отображается только только один рисунок?

    Николай Громов @T_verdisla_V Автор вопроса
    Алексей Уколов, а как тогда можно написать условие что бы оно мне выводило только одну маленькую фото, а не каждую итерацию цикла $projects?
    Написано более трёх лет назад
  • Почему отображается только только один рисунок?

    Николай Громов @T_verdisla_V Автор вопроса
    Алексей Уколов,
    Да, но ваше условие означает если это первый проект, а вы думаете, что оно означает если это первое фото найденного проекта.

    Насколько я понял документацию по smarty это условие
    {if $smarty.foreach.project.first}

    означает "Если это первая итерация цикла с именем project"
    smarty
    Написано более трёх лет назад
  • Почему отображается только только один рисунок?

    Николай Громов @T_verdisla_V Автор вопроса
    Алексей Уколов, т.е не к
    'sys.shadow.ownProject' =>
    array (size=3)
    а к элементу
    'ownProject' =>
    array (size=3)
    Написано более трёх лет назад
  • Почему отображается только только один рисунок?

    Николай Громов @T_verdisla_V Автор вопроса
    Алексей Уколов, вообще $thumbProjects и $projects, вернее их таблицы, связаны отношением 1:M. И $menu и $thumbProjects так же отношением 1:M. Из адреса я получаю id меню, и через меню получаю привязанные к ней $thumbProjects.
    В $thumbProjects лежит массив объектов.
    array (size=3)
    1 =>
    object(RedBeanPHP\OODBBean)[29]
    protected 'properties' =>
    array (size=5)
    'id' => string '1' (length=1)
    'thumb_title' => string 'КОС г Щучинск' (length=24)
    'thumb_foto' => string 'КОС г Щучинск.jpg' (length=28)
    'menu_id' => string '2' (length=1)
    'ownProject' =>
    array (size=3)
    ...
    protected '__info' =>
    array (size=9)
    'type' => string 'thumbproject' (length=12)
    'sys.id' => string 'id' (length=2)
    'sys.orig' =>
    array (size=4)
    ...
    'tainted' => boolean true
    'changed' => boolean false
    'changelist' =>
    array (size=0)
    ...
    'model' => null
    'sys.parentcache.menu' =>
    object(RedBeanPHP\OODBBean)[28]
    ...
    'sys.shadow.ownProject' =>
    array (size=3)
    ...
    protected 'beanHelper' =>
    object(RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper)[16]
    protected 'fetchType' => null
    protected 'withSql' => string '' (length=0)
    protected 'withParams' =>
    array (size=0)
    empty
    protected 'aliasName' => null
    protected 'via' => null
    protected 'noLoad' => boolean false
    protected 'all' => boolean false

    Я не пойму как во вьюхе обратится к, скажем так, дочернему элементу
    'sys.shadow.ownProject' =>
    array (size=3)
    Написано более трёх лет назад
  • Почему отображается только только один рисунок?

    Николай Громов @T_verdisla_V Автор вопроса
    Алексей Уколов, избавиться от внутреннего цикла можно только путем слияния двух таблиц, потому что $projects и $thumbProjects берется из разных таблиц.
    Самое простое и правильное решение - проиндексировать $projects по id
    что то не пойму как это сделать.
    Написано более трёх лет назад
  • Почему отображается только только один рисунок?

    Николай Громов @T_verdisla_V Автор вопроса
    Алексей Уколов , А разве при следующей итерации цикла name=thumbProject, цикл name=project не должен начинаться с начала?
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload,
    А у вас строка как у меня в коде:
    hData[this.name] = data;
    Или всё еще как у вас в старом коде:
    hData[this.name] = this.value;
    Вы наверное заменили только часть функции?


    УПС!))) Не заметил. Спасибо, что помогли разобраться!
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload, в phpStorm изменения сохраняются автоматически, а firefox я всегда обновляю через ctrl+F5. Да и в отладчике если смотреть то он видит новый код. Пошагово прохожу скрипт он как и положено сначала идет в else, следующим заходом в часть если условие верно. Но значение itemIsThumb не меняется
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload,
    Кстати, что с let data, что с var data
    if (this.type === 'checkbox') {
                    data = this.checked;
                } else {
                    data = this.value;
                }

    в этой части кода data идет как-будто нигде не используется и при наведении на нее выдает такое сообщение The value assigned is never used
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload,
    hData[newItemTitle] = sgfgsfg
    hData[itemIsThumb] = on

    on потому что value в html сейчас отсутствует, так бы было значение value
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    AngReload,
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    Arik,
    Написано более трёх лет назад
  • Как сделать checkbox равным 0 или 1?

    Николай Громов @T_verdisla_V Автор вопроса
    Если бы я разбирался в js так же как и вы то наверно мне этот вариант бы понравился)) Единственное что я помню, так это то что я пытался использовать serializeArray(); но почему то он не захотел работать как надо и пришлось вернуться к getData();
    Написано более трёх лет назад
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • Следующие →
Самые активные сегодня
  • Drno
    • 8 ответов
    • 0 вопросов
  • Rsa97
    Rsa97
    • 8 ответов
    • 0 вопросов
  • Максим Кравчук
    • 6 ответов
    • 0 вопросов
  • rPman
    • 6 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 5 ответов
    • 0 вопросов
  • ThunderCat
    ThunderCat
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации