Доброе Утро. Сегодня с утра заметил одну особенность. Если VBScript обращается на url без GET параметров то сервер отвечает 200. А если присутствует хоть один GET параметр то — 404 172.16.11.71 - - [22/Nov/2013:08:32:57 +0400] "GET /index.php HTTP/1.1" 200 797 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; I nfoPath.2; Tablet PC 2.0; .NET4.0C; .NET4.0E; BOIE9;ENUSMSE; Avant Browser)"
172.16.11.71 - - [22/Nov/2013:08:34:15 +0400] "GET /index.php?id=13 HTTP/1.1" 404 2896 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Tablet PC 2.0; .NET4.0C; .NET4.0E; BOIE9;ENUSMSE; Avant Browser)"
Николай, добрый день. JS я подправил (кстати, там уже все идет из коробки, просто закомментировано :)), все заработало, но не могу разобраться с одной проблемкой: в таблице поля color и size выводятся, но у меня там хранятся коды, а названия — в других таблицах (я при старте формирую из них массивы) $c=$modx->getCollection('shopSize'); $sz=array(); foreach($c as $i){ $sz[$i->get('id')]=$i->get('name'); } $modx->setPlaceholder('shopSize',$sz);
$c=$modx->getCollection('shopColor');
$cl=array();
foreach($c as $i){
$cl[$i->get('id')]=$i->get('name');
}
$modx->setPlaceholder('shopColor',$cl); И теперь мне нужно эти названия подставить вместо кодов. Я вижу два способа сделать это:
Добрый день, коллеги. После топиков по xPDO мне много стало ясно и уже появилась простейшая реализация задачи: <code> if (isset($_GET['bobo'])) {$bobo = $_GET['bobo'];}else{$bobo = '0';} ... $where = array( 'parent' => 2, 'pagetitle' => $bobo ); $resources = $modx->getCollection('modResource',$where); $countpagetitle = count($resources);
if ($bobo <> '0' && $countpagetitle == 0){ $newpc = $modx->newObject('modResource'); $newpc->set('pagetitle',$bobo); $newpc->set('parent',2); $newpc->set('template',1); $newpc->save(); $newpc->setTVValue('bobo',$bobo); ... $newpc->save(); }
</code> Но я столкнулся с проблемой и не могу понять в чем дело. 172.16.25.10/index.php?id=13&bobo=hello&...&...&... При открытии браузером страницы с этим сниппетом все работает, создает новый ресурс и заполняются его TV поля. А при открытии этой же ссылки в VBScript сообщается ошибка 404. Из браузера: <code> 172.16.11.71 - - [21/Nov/2013:21:29:34 +0400] "GET /index.php?id=13&bobo=444 HTTP/1.1" 200 584 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36" </code> Из VBScript: <code> 172.16.11.71 - - [21/Nov/2013:21:30:03 +0400] "GET /index.php?id=13&bobo=444 HTTP/1.1" 404 2896 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media </code> VBScript: <code> Wscript.echo WebResponse("http://172.16.25.10/index.php?id=13&bobo=444")
Function WebResponse(sURL) Dim XmlHttpRequest Set XmlHttpRequest = CreateObject("MSXML2.XMLHTTP") XmlHttpRequest.Open "GET", sURL, False XmlHttpRequest.setRequestHeader "If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 UTC" XmlHttpRequest.setRequestHeader "Cache-Control", "no-store, no-cache" XmlHttpRequest.setRequestHeader "Pragma", "no-cache" XmlHttpRequest.send WebResponse = XmlHttpRequest.responseText End Function </code> Сервер: Виртуальная машина XenSrv в локальной сети ubuntu-13.10-server-amd64 LAMP Провел эксперимент в корневой директории создал файл test.php <code>
<?php $bobo = $_GET['bobo']; echo $bobo; ?></code> 172.16.25.10/test.php?bobo=444 И VBScript стал получать ответ 200 Стало ясно что MODX учитывает какие то параметры обращения к серверу, возможно это сделано для безопасности Коллеги, в чем может быть дело? Заранее благодарен, Евгений.
Добрый день. На самом деле у вас очень объемный и общий вопрос. А ваш пример судя по всему — наследие от MODX Evolution. В Revolution все по-другому, и объекта $modx->db нет в принципе. Вам предстоит изучить хоть как-то xPDO, что является основой MODX Revolution и основным средством взаимодействия с базами данных, а так же пакеты, xPDO-классы (через которые происходит взаимодействие с БД) и т.п. Вот один из топиков, который чуть-чуть прольет свет на этот вопрос: modxclub.ru/blog/dokumentatsiya-dlya-spetsialistov/34.html Так же ознакомьтесь с серией топиков по xPDO здесь. Только тогда у вас появится понимание как и что правильней делать в вопросах с БД. Плюс к этому найдите информацию и почитайте про CMPgenerator. Этот пакет позволит из таблиц в БД генерировать модели xPDO-объектов. А в плане сохранения/удаления и прочих операций с записями, работать можно как через сами объекты (например $modx->newObject('MyObjectClass', $data)->save()), так и через процессоры (к примеру xPDOObjectCreateProcessor).
Спасибище огромное!!! Все работает. КРУТЬ
Ясно. Видимо чего-то пых-пыху не хватало. Пожалуйста.
Николай, на другом хостинге ошибка ушла. Спасибо за предложенную помощь.