从joomla中的模块中的视图访问变量

时间:2014-01-28 15:17:37

标签: php ajax joomla

我根据mvc结构为joomla创建了组件。我在视图中有一些变量,并希望通过model将该变量保存到数据库中。我的文件结构:

-models
--contact.php
-views
--contact
---tmpl
----default.php
----default_comajax.php
---view.ajax.php
---view.html.php

我的变量在view.ajax.php中,我想在contact.php中保存这个变量。 我的观点.ajax.php

<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.view');
class contactfViewcontactf extends JViewLegacy
{
        function display($tpl = null) 
        {

    $name = "test";
    $this->get('Msg');

                parent::display(comajax);
        }
}

和我的contact.php是

<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.modelitem');
class contactfModelcontactf extends JModelItem
{
        public function getMsg() 
        {

    $db =& JFactory::getDBO();
    $query = "INSERT INTO #__rtuyds (email) VALUES ('$name')";
    $db->setQuery($query);
    $db->query();
        }
}

如何在contact.php中获取访问$ name? 数据库查询执行并在表中插入一个新行,但新行为空,并且不保存$ name。

2 个答案:

答案 0 :(得分:1)

如果我理解你想要的东西,你需要做以下事情:

使用Lodder的查询修改模型,并在getMsg()方法中添加输入:

public function getMsg($nameValue) 
{

   $db = JFactory::getDbo();

   $query = $db->getQuery(true);
   $query->insert($db->quoteName('#__rtuyds'))
      ->columns($db->quoteName('email'))
      ->values($db->quote($nameValue));
   $db->setQuery($query);
   $db->query();
}

然后在视图的显示方法中执行以下操作:

function display($tpl = null) 
{

  $name = "test";
  $model = $this->getModel();
  $model->getMsg($name);

  parent::display(comajax);
}

答案 1 :(得分:0)

尝试使用以下内容作为更新查询:

$db = JFactory::getDbo();

$query = $db->getQuery(true);
$query->insert($db->quoteName('#__rtuyds'))
      ->columns($db->quoteName('email'))
      ->values($db->quote($name));
$db->setQuery($query);
$db->query();