1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Не могу понять как передать шаблону двухмерный массив

Тема в разделе "Вопросы и ответы по XenForo Framework", создана пользователем Kronger, 05.02.2012.

Загрузка
  1. Kronger

    Kronger Пользователь

    Регистрация:
    18.01.12
    Сообщения:
    31
    Симпатии:
    16
    Версия XF:
    1.1.3
    Всем привет.Я уже голову сломал. Подскажите.
    Не могу понять как передать шаблону двухмерный массив.
    1) Делаю запрос к базе:
    PHP:
        public function getUserFinOper($user_id) {
            return 
    $this->fetchAllKeyed("
                SELECT *
                FROM `kss_fin_oper`
                WHERE `ID_USER` = ?
                            ORDER by `ID`
            "
    'ID',$user_id);
     
    2) Формирую переменную:
    PHP:
    $FinOperList $KssFinance_Model_Finance->getUserFinOper($user_id);
    $viewParams = array(`FinOperList` => $FinOperList,);
    в шаблоне:
    HTML:
    <xen:foreach loop="$FinOperList" value="$FinOper">
                  <option value="{$FinOper}">
                    {xen:phrase KssFinance_Phrase, 'KssFinance_Var={$FinOper}'}
                  </option>
      </xen:foreach> 
      
    Эта злая собака пишет:
    Template Errors: kssfinance_template_finance
    1.Invalid argument supplied for foreach() in C:\SITE\www\library\XenForo\Template\Abstract.php(265) : eval()'d code, line 174: 173: ';
    174: foreach ($FinOperList AS $FinOper)
    175: {

    :confused:
     
  2. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    А что у вас там за кавычки такие в этом месте?
    PHP:
    `FinOperList`
     
  3. Kronger

    Kronger Пользователь

    Регистрация:
    18.01.12
    Сообщения:
    31
    Симпатии:
    16
    Версия XF:
    1.1.3
    Эти кавычки не мешают, можно и с ними и без них.
    Это привычка из SQL - помечать поля (как положено).
    В общем задача стоит такая:
    Из базы получить несколько записей с полями.
    Потом вывести их в листинге или селекте на форме.
     
  4. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    Вы в этом уверены?

    Ради интереса добавьте после строки
    PHP:
    $viewParams = array(`FinOperList` => $FinOperList,);
    вот такой код и посмотрите, что получается.

    PHP:
    Zend_Debug::dump($viewParams);
     
    infis нравится это.
  5. Kronger

    Kronger Пользователь

    Регистрация:
    18.01.12
    Сообщения:
    31
    Симпатии:
    16
    Версия XF:
    1.1.3
    Вот что выдает:
    PHP:
    array(2) {
      [
    "KssFinance_kss_sotrudnik"] => bool(false)
    [
    "FinOperList"] => array(0) {
    }
    }
    Если убрать кавычки то выдает ошибку:
    PHP:
    Server Error
     
    Use of undefined constant FinOperList assumed 'FinOperList'
    XenForo_Application::handlePhpError() in KssFinance/ControllerPublic/Finance.php at line 34
    KssFinance_ControllerPublic_Finance
    ->actionIndex() in XenForo/FrontController.php at line 310
    XenForo_FrontController
    ->dispatch() in XenForo/FrontController.php at line 132
    XenForo_FrontController
    ->run() in C:/SITE/www/index.php at line 13
    Т.е. кавычки нужны, но вот почему передается пустой массив не понятно.

    Кто знает как правильно подготовить массив при запросе из базы для передачи его в форму?
     
  6. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    Я не говорил что кавычки не нужны. Но они должны быть обычные (одинарные или двойные), а не те, которые вы привыкли использовать в SQL
     
    Kronger нравится это.
  7. Kronger

    Kronger Пользователь

    Регистрация:
    18.01.12
    Сообщения:
    31
    Симпатии:
    16
    Версия XF:
    1.1.3
    Ё ма ё!!!!
    Везде кавычки правильные а здесь не те влепил, да же не заметил.
    Спасибо - заработало.
     

Поделиться этой страницей