помогите пожалуйста разобраться как передавать аргументы в модуль. вот мой модуль:
hellow.info
; $Id$
name = Module Hello World
description = My first Drupal 6.x Module
core = 6.x
hellow.module
<?php
function hellow_menu(){
$items = array();
$items['hellow'] = array(
'page arguments' => array('argum', 'node_revision_revert_confirm', 4),
'title' => t('Hello World - Module'),
'page callback' => 'hellow_page',
'type' => MENU_CALLBACK,
'access arguments' => array('access content'),
);
return $items;
}
function hellow_page($argument1) {
$output = "Hello World! Arguments parsed was " . $argument1;
return $output;
}
?>
после ввода в адресную строку такого адреса, он получает и выводит "jjj"
mysite.ru/hellow/jjj/
но мне хотелось бы передавать аргументы не через адресную строку. возможно ли это? и как?
Комментарии
а как?
например нажал ссылку в меню - пошёл по определенному адресу(в запросе никакие аргументы не передаются) - загрузился модуль(например в виде блока), который сделал запрос к БД и вытащил какие-нибудь данные(например количество нод на сайте)
и в чём проблема? не знаете как создать блок или сделать запрос к бд?
такой метод передачи аргументов называется POST, почитайте
Пользователи от такого способа перехода по меню сперва отравятся, потом застрелятся, потом повесятся.
Если уж хочется, чтоб в адресной строке всегда был один адрес(а так же куча гемороя при эксплуатации) используйте аякс. Но перед использованием, рекомендую загуглить это слово, с вероятностью 99% потом откажетесь от этой идеи.
Чем пост хуже любого другого метода? Вы бы хотя бы прочитали сначала его отличая от ГЕТ метода потом бы говорили.
охо, от аякса отказаться? =))) круто.
сообщение полный бред.
Минусы от аякса, к которым добавятся проблемы с обновлением страницы, а так же отсутствие плюсов от аякса, в добавок POST можно передать только из формы.
я знаю, что такое пост, гет и т.д.)
От аякса полностью отказываться никто не предлагает, однако делать весь сайт на аяксе ни к чему хорошему не приведет. Это как с алкоголем, в малых дозах полезно, а вот если питаться одной только водкой...
Бред, post можно передать и не из формы
Нефига вы не знаете
...
Ах да, речь, если что, про это:
И что? Если для Вас это такая проблема, не учите свей неопытности других.
divined ты уроки все сделал?
Что тебе опять не понравилось?
ну спасибо за помощь. действительно я сам плохо представляю что хочу
меня напугало то, что если я буду передавать большой массив данных, то урл получится некрасивым поэтому и искал другой способ
думаю, что для большей части моих задач все таки подойдёт гет.
подскажите пожалуйста как через гет передать несколько аргументов. такой код не работает
<?php
function hellow_menu(){
$items = array();
$items['hellow'] = array(
'page arguments' => array('argum', 'node_revision_revert_confirm', 4),
'title' => t('Hello World - Module'),
'page callback' => 'hellow_page',
'type' => MENU_CALLBACK,
'access arguments' => array('access content'),
);
return $items;
}
function hellow_page($argument1, $argument2) {
$output = "Hello World! Arguments parsed was " . $argument1 . $argument2;
//$output = print_r($arg);
return $output;
}
?>
вот адрес с двуми аргументами в гет при настроенных ЧПУ:
mysite.ru/hellow/jjj/kkk
'page arguments' => array(1,2), никогда не использовал эту опцию, но думаю должно быть так, если посмотреть в других модулях.
Или вообще ее убрать.
Приведите наглядный пример
Ну так просветите
Для меня как раз таки нет никаких проблем
И не должен. Чтоб работать с аргументами путь должен быть вида 'путь/%/%', тогда ваш пункт будет откликаться на 'путь/любое/любое'. Так же не совсем ясно где вы взяли вот это
Я скажу только: cURL и jQuery.post().
Остальное смотрите в нете.
Туда же можно отнести, к примеру тот же старый добрый telnet, не подскажете как прикрутить их к главному меню на сайте друпала?
Обычный аякс запрос через пост, так что тоже не подходит
Ага, там есть предложение рисовать форму через JS, вариант, конечно, но немного странный...
Вы уходите от темы, вы сказали что нельзя передать пост без формы. Я опровергаю ваши доводы. Вы опять несете чушь. Лучше вам прекратить показывать свою неопытность.
Дополню sg85
На самом деле плейсхолдеры в урл тоже не всегда обязательно указывать (хотя желательно). Например у нас задан в хук_меню урл вида "my-url" и есть колбэк вида my_callback($arg1, $arg2, arg3) и не задан "page arguments", то мы можем набрать в строке
"my-url/path/path1/path2" получим в нашем колбэке такое
$arg1 = path
$arg2 = path1
arg3 = path2
и так далее...
Давай до свидания
именно от темы я никуда не ухожу, ибо тема как раз о том как передать Пост без использования аякса и прочих радостей:
далее Ваша реплика про способ решения:
что по сути предложение передавать аргументы пунктов меню именно через пост, на что:
Как видно, про аякс тут ни слова, только про метод Пост.
Ну и напоследок попробую рассказать чем же пост хуже:
С аяксом примерно та же песня, за исключением того, что навигация браузера летит к чертям немного по другой причине и кроме минусов этот способ имеет и полезные плюсы.
И еще, коли уж делать аяксом, то в идеале именно через ГЕТ метод, в этом случае можно обойти проблему с индексацией и отключенной явой в браузере.
Навигацию в чистом аяксе видел всего 1 раз в мобильной версии сайта толи Мегафона толи МТС, скорее всего первое, что бы подключить всего одну услугу пришлось раз 10 перелогиниваться и каждый раз вбивать капчу, больше желания заходить туда с телефона у меня нет...
Во-первых во вопросе не было не слова об индексации, добавление в избранное, удобства навигации.
Во-вторых, большую часть этого решает ajax history.
В-третьих, вопрос был о передачи параметров без аргументов в адресе, разве мой ответ был неверным?
И наконец, где вы в вопросе увидели "о передачи ПОСТ без аякс"?
За то Вы задали вопрос о недостатках пост метода, собственно то и был ответ на Ваш вопрос.
Опять же аякс
Технически это возможно, однако:
Тут:
И где же тут без аякс?
В каком месте аякс привязан к пост методу?
А причем тут это? Нигде не привязан, но если с помощью него можно это сделать, разве это не решение?
Вот есть заказчики, которые кровь износа хотят чтобы не было никаких буковок и циферек в адресе, и что с ними делать? Вот и приходится решать подобными методами.
Вы бы не решили подобным образом если заказчик платит вам 600 т.р. и его не волнуют никакие индексации и прочее, т.к. его брендовые запросы превышают любой СЕО трафик?
Так что если решение есть, то почему бы не подсказать человеку, он же просит.
С его помощью можно сделать абсолютно тоже самое независимо от способа передачи данных.
Пока видел такой прикол всего однажды
Именно через ПОСТ нет. Ибо считаю, что делать меню через него это извращение
Через ПОСТ делать легче если у вас туева хуча параметров, легче ведь обработать массив, чем строку не определенной длины?
Хотя это уже сильные тонкости под проект, которые далеко выходят за рамки топика.
Что мешает сделать explode строки? Для GET в Друпал есть даже
<?php drupal_get_query_parameters() ?>
Ограничения размера url, но это смотря что передавать.
хм
Тогда уж не explode, а сериализацию, но все верно - ограничение длины URL.