DLRequest

    DLRequest - запуск сніпетів з параметрами з get/post

    DLRequest - запуск сніпетів з параметрами з get/post

    Сніпет розроблений для заміни Ditto з екстендером request на прохання Extremum і на його ж кошти, за що велике спасибі.

    Сніпет приймає значення з post або get-масиву і використовує їх в якості параметрів для запуску іншого сніпета. Спочатку планувалася робота тільки з DocLister (звідси і назва), але в підсумку можна викликати будь-сніпет. Проте, наявність встановленого DocLister'а обов'язково.

    DLRequest вміє не тільки передавати параметри, але і будувати форму для управління цими самими параметрами, без милиць типу:

    <?php
    //[!selected? &field=`ditto_id1_sortDir` &value=`DESC`!]
    if ($_REQUEST[$field] == $value) {
        echo "selected"; 
    }
    

    Важливий момент - можливі значення параметрів задаються розробником, тобто якщо в формі для вибору кількості документів на сторінці зазначено «10, 20, 50, 100», то підставити руками url?display=100500 не вийде - такий параметр буде просто проігноровано.

    Передбачена також можливість зберігати значення параметрів, які передаються з браузера для інших фрагментів, наприклад, для DocLister це буде параметр page. Тобто якщо в списку документів ви перебуваєте на сторінці 5, то після зміни, наприклад, напряму сортування, все одно залишитеся на сторінці 5.

    Тепер приведу приклад виклику, з якого зрозуміло, як це все працює:

    [+paramsForm+]
    <div>
        [!DLRequest? 
        &runSnippet=`DocLister` 
        &parents=`2` 
        &tpl=`@CODE:

    [+id+]. [+pagetitle+]

    ` &paginate=`pages` &display=`0` &rqParams=`{ "sortBy":{ "id":"По id", "pagetitle":"По pagetitle" }, "sortDir":{ "asc":"По возрастанию", "desc":"По убыванию" }, "display":{ "1":"1 документ", "3":"3 документа", "5":"5 документов" } }` &rqParamsNames=`{ "sortBy":"Сортировать по", "sortDir":"Порядок", "display":"Результатов на странице" }` &selectedClassName=`selected` & paramsForm=`paramsForm` &keepParams=`page` & paramsOwnerTPL=`@CODE:
    [+keepParams+] [+params+]
    ` & param.ownerTPL=`@CODE: ` & param.tpl=`@CODE: ` &sortBy.tpl=`@CODE: ` &display.ownerTPL=`@CODE: ` &keepTpl=`@CODE: ` !] </div> [+pages+]

    Після & прогалини стоять, бо інакше редактор підміняє символи.

    Автор: Pathologic