如何在joomla 3.1中从模块传递给组件

时间:2013-08-30 02:17:13

标签: forms joomla components jinput

我想创建一个前端joomla组件,这是我的第一次体验。

这是重要的事情:

1组分/ Controller.php这样

class TestController extends JControllerLegacy
{
public function display($cachable = false, $urlparams = false)
{

$view= JFactory::getApplication()->input->getCmd('view','items');
    JFactory::getApplication()->input->set('view', $view);
    parent::display($cachable, $urlparams);
}
}

2:com_test / model / items.php

<?php
defined('_JEXEC') or die();

jimport( 'joomla.application.component.modellist' );


class TestModelItems extends JModelList
{
    public function __construct($config = array())
    {
    if (empty($config['filter_fields'])) 
        $config['filter_fields'] = array('id', 'title', 'catid');
    parent::__construct($config);
}

function getListQuery()
{
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select(...)
   return $query;
 }

}

我可以在查看文件夹的default.php上打印查询结果! 但我又做了一件事。

我在自定义模块的网站首页中有这样的表单:

<form action="" method="post">
<input type="text"  name="wordsearch" value="search">
.
.
<input type="submit" />
</form>

现在!

我不知道如何将此表单(使用post方法)发送到模型文件夹中的getListQuery()函数...怎么办呢?

当我点击提交表单时,组件过滤器根据表单的值查询sql,然后向用户显示新结果!

我用谷歌搜索了几个小时但没有机会解决。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以按照以下方式将模板从模块提交到组件。

假设您的组件名称为com_helloworld模块表单中应包含以下内容:

<form action="" method="post">
<input type="text"  name="wordsearch" value="search">
.
.
<input type="hidden" name="option" value="com_helloworld" />
<input type="hidden" name="view" value="yourview" />
<input type="hidden" name="task" value="my_controller_fun" />
<input type="hidden" value="your_controller_file_name" name="controller">
<input type="submit" />
</form>

在此示例中,您的控制器文件应该具有从控制器到模型的my_controller_fun方法,您可以使用常规方法。此方法将获取控制器中的所有表单数据,然后您可以将其传递给模型。

详细:

在您的控制器文件中。

 function my_controller_fun(){
     $post_array = $_POST;
     $model = $this->getModel('Profile', 'UsersModel');//example for including profile model you can specify your model file name
     $model->function_inyourmodel($post_array);//this function should be in model 
 }

希望能帮到你。