Как получить cookie в OctoberCMS

Я только что столкнулся с этой проблемой и закодировал небольшую обертку. Это не самый красивый или лучший код, я уверен, но он может помочь кому-то, вот он:

function runQuery(PDO $PDO, string $sql, array $params = [])
{
    if (!count($params)) {
        return $PDO->query($sql);
    }

    foreach ($params as $key => $values) {
        if (is_array($values)) {
            // get placeholder from array, e.g. ids => [7,12,3] would be ':ids'
            $oldPlaceholder  = ':'.$key;
            $newPlaceholders = '';
            $newParams = [];
            // loop through array to create new placeholders & new named parameters
            for($i = 1; $i <= count($values); $i++) {
                // this gives us :ids1, :ids2, :ids3 etc
                $newKey = $oldPlaceholder.$i;
                $newPlaceholders .= $newKey.', ';
                // this builds an associative array of the new named parameters
                $newParams[$newKey] = $values[$i - 1];
            }
            //trim off the trailing comma and space
            $newPlaceholders = rtrim($newPlaceholders, ', ');

            // remove the old parameter
            unset($params[$key]);

            // and replace with the new ones
            $params = array_merge($params, $newParams);

            // amend the query
            $sql = str_replace($oldPlaceholder, $newPlaceholders, $sql);
        }
    }

    $statement = $PDO->prepare($sql);
    $statement->execute($params);
    return $statement;
}

Например, передавая их в:

SELECT * FROM users WHERE userId IN (:ids)

array(1) {
  ["ids"]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
}

Становится:

SELECT * FROM users WHERE userId IN (:ids1, :ids2, :ids3)

array(3) {
  [":ids1"]=>
  int(1)
  [":ids2"]=>
  int(2)
  [":ids3"]=>
  int(3)
}

Это не пуленепробиваемый, но, как единственный разработчик для моих потребностей, он отлично работает, пока все равно.

0
задан Pyramidhead85 25 February 2019 в 00:54
поделиться

1 ответ

Хотя это и не самое лучшее, способ получения значения cookie - это хорошо. Ваша проблема в том, как передать значение в шаблон веточки.

Синтаксис для присвоения $cookie_time неправильный.
Это должно быть как; $this['cookie_time'] = ...

Полный код страницы:

url = "/test"
==
public function onStart() {
    $this['cookie_time'] = htmlspecialchars(

Хотя это и не самое лучшее, способ получения значения cookie - это хорошо. Ваша проблема в том, как передать значение в шаблон веточки.

Синтаксис для присвоения $cookie_time неправильный.
Это должно быть как; $this['cookie_time'] = ...

Полный код страницы:

[110]

См. Пример Hello World в октябрьском документе .

COOKIE['get_date_time']); } == {{ cookie_time }}

См. Пример Hello World в октябрьском документе .

0
ответ дан kanji 25 February 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: