Добавление текстовой формы в представление компонентов Joomla 3

Я создаю простую форму отправки в представлении моего компонента. Вот настройка:

<?php
// no direct access
defined('_JEXEC') or die;
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
$jinput = JFactory::getApplication()->input;

$newValue = $jinput->get('newValueSubmit');

?>

Вот форма, которую я создал в представлении:

<div style="position:relative; top:173px; left:357px;">

    <label for="newValue" class="col-sm-2 control-label"><h1>Enter</h1></label>
</div>
<div class="form-group" style="position:relative; top:120px; height:350px; width:950px; left:450px;">
<div style="position:relative; left:120px; width:950px;>

<form class="form-horizontal" role="form" action="<?php echo JURI::current(); ?>" method="post">
<input id="newValueSubmit" name="newValueSubmit" type="text" class="form-control input-lg text-success" placeholder="Value"/>
<button id="submit" type="submit" name="submit" class="btn btn-primary btn-large">Submit</button>

</div>

</div>
</form>
</div>


<?
  $data =new stdClass();
  $data->id = '';
  $data->request = $newValue;
  JFactory::getDbo()->insertObject('#__mytable', $data);

?>

Итак, моя попытка состояла в том, чтобы пользователь ввел значение в текстовое поле, а затем щелкнул кнопку отправки, чтобы опубликовать его в результатах. Затем значение будет помещено в позицию '#__mytable' для записи столбца newValue. Это не работает.

Должен быть лучший способ сделать это. Нужно ли мне создавать новое представление, в которое форма направляет значения? Это может быть предпочтительнее, учитывая общую архитектуру проекта. В любом случае, как я могу получить введенное пользователем значение в базу данных?


ОБНОВЛЕНО: я обновил скрипт, чтобы включить последние предложения по изменению.


ОБНОВЛЕНО: Обновлен запрос к Jinput в связи с Joomla 3


person codacopia    schedule 01.02.2014    source источник
comment
У вас есть модальный и контроллер для вашего компонента? Любые обрабатываемые данные должны быть помещены в модальный файл. Joomla использует MVC, которого я рекомендую вам придерживаться. Если это слишком экстремально, вы всегда можете создать модуль, а не компонент, и встроить его в статью. Лично я обнаружил, что писать модули гораздо проще, чем компоненты.   -  person Lodder    schedule 02.02.2014
comment
Спасибо @Lodder, для этого я перенесу функции в модель и дисплеи контроллера и посмотрю, сработает ли это.   -  person codacopia    schedule 02.02.2014


Ответы (1)


Попробуйте что-то вроде этого:

   $newValue = JRequest::getVar('newValue');

   $data =new stdClass();
   $data->id = '';
   $data->newvalue = $newValue;
   JFactory::getDbo()->insertObject('#__mytable', $data);
person user1876234    schedule 01.02.2014
comment
Я только что попробовал это, но он не вставляется... Я просто заменил блок после формы, которая начинается с вызова isset. Это то, куда вы намеревались пойти? - person codacopia; 01.02.2014
comment
Я только что обновил вопрос, чтобы лучше отразить предпринятую здесь попытку. - person codacopia; 01.02.2014
comment
хорошо .. Я просмотрел дальше и вижу, что каждый раз, когда он перезагружает страницу, представление отправляет новую запись в базу данных. Итак, связь установлена, но ей не хватает контроля. - person codacopia; 02.02.2014
comment
Joomla 3.x = Не используйте JRequest! пожалуйста, обновите свой ответ с правильными стандартами кодирования - person Lodder; 02.02.2014
comment
@Lodder, спасибо, я обновил вопрос с вашими правками. По-прежнему возникают проблемы с обновлением представления на той же странице. - person codacopia; 02.02.2014