Добавяне на текстова форма към компонентен изглед 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