如何在 joomla 3.1 中将表单从模块传递到组件

Posted

技术标签:

【中文标题】如何在 joomla 3.1 中将表单从模块传递到组件【英文标题】:how pass form from module to component in joomla 3.1 【发布时间】:2013-09-02 15:38:54 【问题描述】:

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

这里有重要的事情:

1-component/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】:

您可以按如下方式从模块到组件提交表单。

假设你的组件名是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 
 

希望它的帮助..

【讨论】:

谢谢,但这正是我的问题!如何编写 my_controller_fun() 函数?以及如何将其传递给模型?

以上是关于如何在 joomla 3.1 中将表单从模块传递到组件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Joomla 中将数据存储到多个表中?

如何在 Joomla 中将组件放入模块中!地点?

如何在laravel php中将变量从视图传递到控制器而没有表单

如何在 Laravel 中将变量从视图传递到控制器而不使用 URL 或表单

通过 MVC 传递表单数据 - Joomla

组件模块中的 Joomla 过滤器表单,自动填充字段