Передача данных в сниппет

Доброго времени суток. Нужна помощь в решении задачи есть сниппет который по API передает данные на другой ресурс вот код сниппета:


$process = curl_init("https://user.api.onliner.by/login");
curl_setopt($process, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_COOKIEJAR, 'cookie');

$result = curl_exec($process);
curl_close($process);

$matches = [];
preg_match("/token\('(.*)'\);/", $result, $matches);
$token = $matches[1];

$process = curl_init("https://user.api.onliner.by/login");
curl_setopt($process, CURLOPT_HTTPHEADER, [
    'Accept: application/json',
    'Content-Type: application/json',
]);
curl_setopt($process, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($process, CURLOPT_VERBOSE, true);
curl_setopt($process, CURLOPT_HEADER, 1);
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_COOKIEFILE, 'cookie');

curl_setopt(
    $process,
    CURLOPT_POSTFIELDS,
    json_encode([
        'token' => $token,
        'login' => 'П',
        'password' => '13',
    ])
);
$result = curl_exec($process);
$header_size = curl_getinfo($process, CURLINFO_HEADER_SIZE);

$header = substr($result, 0, $header_size);

curl_close($process);

preg_match_all("/Set-Cookie: (.*?)=(.*?);/i", $header, $res);

$cookie = [];
foreach ($res[1] as $key => $value) {
    $cookie[$value] = $res[2][$key];
};

$session = urldecode($cookie['onl_session']);

var_dump($session);


$data = [
    "location"=> [
        "address" => "Беларусь, [[+tv.town_name]], [[+tv.street_name]], [[+tv.house_number]]",
        "user_address" => "[[+tv.street_name]], [[+tv.house_number]]",
        "latitude" => 53.234234,
        "longitude" => 27.6754
    ],
    "photos" => [
        [
            "600x400" => "http://upload.onliner.by/apartment_rentals/1/600x400/fba665aea899df8f7a243c2d5e7093cf.jpg",
            "1400x930" => "http://upload.onliner.by/apartment_rentals/1/1400x930/fba665aea899df8f7a243c2d5e7093cf.jpg"
        ],
        [
            "600x400" => "http://upload.onliner.by/apartment_rentals/1/600x400/87dc18938a1dcbcfa39de290b1a7711a.jpg",
            "1400x930" => "http://upload.onliner.by/apartment_rentals/1/1400x930/87dc18938a1dcbcfa39de290b1a7711a.jpg"
        ]
    ],
    "resale" => true,
    "number_of_rooms" => 2,
    "walling" => "brick",
    "floor" => 2,
    "number_of_floors" => 5,
    "area"=> [
        "total" => 50,
        "living" => 40,
        "kitchen" => 9
    ],
    "wall_height" => 2.7,
    "building_year" => 1961,
    "description" => "Шикарная хрущевка",
    "contact"=> [
        "name" => "Валентина Михайловна",
        "phones" => [
            "29 1234567",
            "+375331234567"
        ],
        "call_time" => [9, 18]
    ],
    "seller"=> [
        "type" => "agent",
        "name" => "Квадратный метр",
        "legal_info" => [
            "unp" => "190003285",
            "license" => [
                "number" => "02240/29",
                "authority" => "Министерство юстиции РБ",
                "validity" => ["17.02.2015", "17.02.2020"]
            ],
        ],
    ],
    "price"=> [
        "amount" => "100000.00",
        "currency" => "USD"
    ],
    "facilities" => [
        "balcony",
        "repaired"
    ],
    "parking" => "garage"
];


$process = curl_init("https://pk.api.onliner.by/apartments");
curl_setopt($process, CURLOPT_HTTPHEADER, ['Accept: application/json', 'Content-Type: application/json']);
curl_setopt($process, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($process, CURLOPT_COOKIE, "onl_session=" . urlencode($session) . ";");
curl_setopt(
    $process,
    CURLOPT_POSTFIELDS,
    json_encode($data)
);
$result = curl_exec($process);

curl_close($process);
нужно чтобы в этот сниппет передавались параметры ресурсов допустим
eflit
17 января 2017, 09:51
modx.pro
1
3 487
0
Поблагодарить автора Отправить деньги

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

Олег
17 января 2017, 12:55
0
Параметры в сниппет передаются так:
[[!mySnippet?&param1=`param`&param2=`param`]]
Или так:
{$_modx->runSnippet('!mySnippet', [
'param1' => 'param',
'param2' => 'param',
])}
    eflit
    17 января 2017, 13:09
    0
    может я не правильно задал вопрос мне нужно чтобы в мой сниппет передавались данные ресурсов и tv параметра
    "address" => "Беларусь, [[+tv.town_name]], [[+tv.street_name]], [[+tv.house_number]]",
      Павел Карелин
      17 января 2017, 13:14
      0
      Есть два простых способа
      или передавать в параметр сниппета, а потом ловить такую переменную.
      [[!mySnippet? &param1=`param` &param2=`param`]]
      В коде вызываем $param1 и $param2 соответственно.
      или доставать объект ресурса в котором лежит tv и подхватывать её в скрипте.
      // Берем ресурс с id 10
      $resource = $modx->getObject('modResource',10);
      //Получаем значение tv с именем name_of_tv
      $val = $resource->getTVValue('name_of_tv');
      // Поле ресурса еще проще получить
      $pagetitle = $resource->get('pagetitle');
      А то что ты пишешь не корректно, потому что интерпретатор вставляет переменные уже после выполнения сниппета. Так что их туда нужно или передавать или получать.
      but1head
      17 января 2017, 13:15
      0
      Имхо | snippet по красивше у добнее
      {'!mySnippet' | snippet : ['param1' => 1]}
        Павел Карелин
        17 января 2017, 13:20
        0
        Стандартный [[!mySnippet? &param1=`param` &param2=`param`]] не намного хуже смотрится и читается.
          Олег
          17 января 2017, 13:26
          0
          Читал где-то, что если не использовать вызовы стандартного шаблонизатора, то он вообще не запускается и скорость работы сайта возрастает.
          but1head
          17 января 2017, 13:27
          0
          в pdoTools Fenom внедрен не от того, что [[! / [[$ / [[* «не намного хуже смотрится и читается». Это конечно не все его преимущества, как минимум скорость.
            Павел Карелин
            17 января 2017, 13:36
            +1
            Я даже и не буду спорить, но если у парня ни разу все не на Fenom, что скорей всего, у него будет запускаться и родной парсер и Fenom, и тормозить будет куда сильнее чем без Fenom. А так конечно да с Fenom работает гораздо шустрее. Хотя modx и так достаточно быстрый.
              but1head
              17 января 2017, 13:39
              0
              Мой коммент непосредственно к комменту Олега, а точнее к
              {$_modx->runSnippet('!mySnippet', [
              'param1' => 'param',
              'param2' => 'param',
              ])}
                eflit
                17 января 2017, 13:52
                0
                что то я вообще не догоняю а как мне в param1 за сунуть данные tv ресурса
                  but1head
                  17 января 2017, 13:54
                  0
                  fenom
                  {'!mySnippet' | snippet : ['param1' => $_modx->resource.myTV]}
                  modx
                  [[!mySnippet? &param1=`[[*myTV]]`]]
                  внутри сниппета $param1 или $scriptProperties['param1']
                    eflit
                    17 января 2017, 13:57
                    0
                    а как указать id ресурса из которого должны подставятся данные?
                      but1head
                      17 января 2017, 14:01
                      0
                      как получить id ресурса или $modx->resource->id
                        eflit
                        17 января 2017, 14:05
                        0
                        прикольно спасибо но все же может подскажите я не про в modx
                        but1head
                        17 января 2017, 14:36
                        0
                        в сниппете $modx->resource->id; на странице [[*id]] / {$_modx->resource.id}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    16