Переменная из Снипита в шаблон

сделал снипет, который передирает таблицу
$sth = $modx->query("SELECT * FROM clients");
print 'Количество клиентов - '.$sth->rowCount();?></br><?
    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    foreach ($result as $data) {
    $name = $data['name'];
    }
$modx->setPlaceholder('output',$name);
но почему то не хочет выводить ее в шаблоне
[[snipet]]
[[+output]]
что делаю не так
в $name выводятся все поля из БД задача записать каждле в radio кнопки и вывести их
vit
vit
11 октября 2022, 17:27
modx.pro
907
0

Комментарии: 10

Антон Тарасов
11 октября 2022, 18:04
1
0
переменная $name в итоге получает только значение имени последнего клиента, убедитесь, что оно непусто(ну и есть такой столбец конечно).
Сам сниппет-то вызывается(можно попробовать вызывать некешированным !snippet)? Добавьте больше отладочных сообщений.
    vit
    vit
    11 октября 2022, 18:20
    0
    А как вывести все. У меня в name 20 строк и я хочу их выевести последовательно в пресхолдер. Подскажите как это сделать?
      Антон Тарасов
      11 октября 2022, 18:23
      1
      0
      Конкатенацией, например, так:
      $name .= $data['name'];
      или с каким-либо разделителем, как они должны в итоге выглядеть, через запятую, или каждый на новой строке?
        vit
        vit
        11 октября 2022, 18:39
        0
        Каждый в таком виде
        <input type="radio" id="fullname"
             name="fullname" value=“[[+name]]">
            <label for="fullname">[[+name]]</label>
          Антон Тарасов
          11 октября 2022, 18:43
          1
          0
          foreach ($result as $data) {
              $name .= "<input type='radio' id='fullname' name='fullname' value='$data["name"]'><label for='fullname'>$data["name"]</label>"
              }
            vit
            vit
            11 октября 2022, 18:51
            0
            А что в шаблоне ввести для отображения? Я чего то запутался уже(? Спасибо за помощь
              Антон Тарасов
              11 октября 2022, 18:55
              1
              0
              Вы собрали все в переменную $name, теперь ее делаете плейсхолдером и выводите.
                vit
                vit
                11 октября 2022, 19:56
                0
                все работает отлично, но появился еще один вопос
                снипет
                $sth = $modx->query("SELECT * FROM gtgbs_yclients_staff");
                    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
                    foreach ($result as $data) {
                 $name .=$data['name'];
                }
                $modx->setPlaceholder('name',$name);
                вывод
                [[!test]]
                <input type="checkbox" name="[[+name]]" value="[[+name]]" [[!+fi.color:FormItIsChecked=`[[+name]]`]] > [[+name]]
                но все собирает в один снипет вывожу в formIt
                в снипете как я понял нельзя прописать чтобы еще выбирались значения.
                  Алексей Смирнов
                  12 октября 2022, 08:31
                  0
                  Вам нужно в сниппете сделать сразу через минимальный шаблон или написать:
                  $sth = $modx->query("SELECT * FROM gtgbs_yclients_staff");
                      $result = $sth->fetchAll(PDO::FETCH_ASSOC);
                       $name = '';
                      foreach ($result as $data) {
                  $name .= $modx->getCunck($tpl,$data);
                  }
                  //$modx->setPlaceholder('name',$name);
                  return $name;
                    Алексей Смирнов
                    12 октября 2022, 08:42
                    0
                    Вам нужно в сниппете сделать сразу через минимальный шаблон или написать:
                    $sth = $modx->query("SELECT * FROM gtgbs_yclients_staff");
                        $result = $sth->fetchAll(PDO::FETCH_ASSOC);
                         $name = '';
                        foreach ($result as $data) {
                    if ($fidata == $data['name']) {
                    $data['chekedis'] = 'checked';
                    }
                    
                    $name .= $modx->getCunck($tpl,$data);
                    }
                    //$modx->setPlaceholder('name',$name);
                    return $name;
                    И вызывать
                    [[!+test? &tpl=`@INLINE <input type="checkbox" name="[[+name]]" 
                    value="[[+name]]" [[+chekedis]] >` &fidata=`[[!+fi.color]]`]]
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    10