我想创建一个前端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,然后向用户显示新结果! 我用谷歌搜索了几个小时但没有机会解决。谢谢你的帮助。答案 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
}
希望能帮到你。