Доброго времени. Хочу сделать следующее: компонент, в котором есть <form>, где пользователь может ввести данные, которые после нажатия кнопки Submit вернутся в скрипт, который сгенерирует текст с использованием введенной строки. Для начала взял пустой компонент com_selfpage.zip Установил его на свою Joomla! Опубликовал, поставил его в меню, тут никаких сложностей. Изменил index.php таким образом Код (CODE): $html .= '<div class="moduletable">'; $html .= '<h3>Form</h3>'; $html .= '<form action="'.sefRelToAbs( 'index.php?option=sendform' ).'&task=text" method="post" name="usertext" >'; $html .= '<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">'; $html .= '<tr>'; $html .= '<td>'; $html .= '<label for="mod_usertext">Usertext</label>'; $html .= '<br />'; $html .= '<input name="input_usertext" type="text" class="inputbox" alt="usertext" size="10" />'; $html .= '<br />'; $html .= '</td>'; $html .= '</tr>'; $html .= '</table>'; $html .= '<input type="submit" name="button" value="Submit">'; $html .= '</form>'; $html .= '</div>'; echo $html; После чего поставил и проверил. Этот код реально открывается и отображает заголовок формы, поле для ввода и кнопку. Теперь нужно получить собственно текст. Но при нажатии на кнопку Submit выдает сообщение о невозможности отобразить страницу: The page you are trying to access does not exist. Please select a page from the main menu. Как я понимаю, то при попытке обратиться к странице, адрес которой указан в параметре action="'.sefRelToAbs( 'index.php?option=sendform' ).'&task=text" получается адрес вида action="http://joomla.test/index.php?option=sendform&task=text" а поскольку такой страницы не существует, то и отобразиться ничего не может. Теперь собственно вопрос, какие значения должны стоять в action='...' что бы Жумла поняла, что отправленный через форму текст нужно передать на обработку опять же в компонент com_selfpage и откуда можно будет получить собственно значение из поля ввода с именем name="input_usertext"? Потому что при использовании в начале кода строки Код (CODE): $param = mosGetParam($_REQUEST,'input_usertext','1'); я получаю на выходе значение 1, т.е. mosGetParam срабатывать-то срабатывает, просто в нем ничего нет, что и не удивительно. Да, напоследок, видел предлагалось выдирать данные из $_GET но у меня RegisterGlobals отключен. По крайней мере этот вариант в итоге ничего не дал, т.е. все равно "попытка ссылки на недоступную страницу". Понятно, что я скорее всего просто не могу объяснить Джумле, куда посылать данные, ведь форма-то заполняется, но от этого как-то не легче. Вопрос скорее всего элементарный, но ответ на него я пока не нашел, хотя перетрусил довольно много всяких faq, статей и доков. Помогите, кто чем может. Часть понял в адресе сделал вид ссылки Код (CODE): form action="http://joomla.test/index.php?option=com_selfpage&task=text&Itemid=26" method="post" name="usertext" исчезло указание о невозможности отобразить страницу, но вот данные все равно прочитать пока не получилось. Код (CODE): $param = mosGetParam($_REQUEST,'input_usertext','1'); Мда. Все гениальное просто. P.S. Вобщем, тему я закрою, на тупость простьба не обижаться, а то что я тут намучал ни в одном факе все равно доступным языком не расписано. Итак, подбивая итоги для таких же новичков, как я сам: 1. В формах action='...' ставим адрес, указанный в Url который можно найти зайдя в административную панель и пройдя в раздел управления меню, где мы собственно и прописали какой компонент мы используем. 2. В $param = mosGetParam($_REQUEST,'input_usertext','1'); прописываем имя/имена полей, которые хотим получить и дело в шляпе. Надеюсь кому-то это поможет.
Ответ: Как получить переменную через form action? >Да, напоследок, видел предлагалось выдирать данные из $_GET но у меня RegisterGlobals отключен. Одно другому не мешает. Скажи что конкретно в факе не верно или не хватает - добавлю.
Ответ: Как получить переменную через form action? Да вот этого же и не хватает, что нигде толком не расписано, что для передачи данных в свой php-скрипт, формат ссылки должен иметь вид: "http://yoursite.adress.com/index.php?option=component_name&ItemId=N[&...]", где component_name - имя компонента, в котором спрятан скрипт-получатель данных, ItemId - собственно Id идентификатор страницы со скриптом в системе сайта. Потому что даже если использовать rd_addphp или iClude, то все равно передавать внутрь скрипта данные как-то надо.
Re: Ответ: Как получить переменную через form action? Извини, ты не подскажешь мне как сделать следующее: Сколько я не лазил, так и толком и не понял Я хочу сделать компонент, в котором зарегистрированный пользователь, под своим именем будет заполнять форму и при нажатии на submit, будет проверка условий и запись в БД, если условия верны. Моя сложность, может и простая, но для меня существенная, 1) Я не знаю куда submit отправить, чтобы все о пользователе осталось, т.е. user_name и т.д. 2) И второе, в модуле подсоединение к БД вызывается databases, а в компоненте ?
Re: Ответ: Как получить переменную через form action? Все разобрался))) Да вот теперь видно самое главное отличие компонента от модуля сам отвечу: 1) при публикации компонента мы получаем ссылку на него, вот ее и прописываем в submit 2) К БД подсоединение через databases
Помогите, пожалуйста. Я пытаюсь написать модуль простенький, выводящий форму, при выборе из списка статьи и нажатия кнопки "добавить" передающей в себя переменную field_id. Вот в таком виде говорит "страница не найдена". т.к. к меню я его не превязываю, то не могу увидеть правильную ссылку. Код (html): <form action="<?php echo sefRelToAbs( 'index.php?option=mod_mymod&task=add_new' ); ?>" method="post" name="field_id"> Country : <select name="Добавить похожую группу:"> <?php echo $forma ?> </select><br /> <input type="submit" value="Добавить" /> </form> И может у кого-нибудь есть примеры модулей простеньких для понимания принципа работы? В стандартных модулях (авторизация, голосования) все так навороченно, что начинающему тяжело разобраться...
Упс, не там искал. Спасибо огромное - работает. тяжело чайнику понять где, ошибка. над этой проблемой я пару вечеров бился.