在组件的 view.html.php 文件(例如 com_faq/views/view.html.php)中,您可以为输入字段部分定义标记。我建立了一个 $html 变量,例如:
$html .= '<input name="addQuestion" value="" type="Text"/>';
然后添加对它的引用:
$this->assignRef("addQuestion", $html);
以便在您的视图模板(即 com_faq/views/tmpl/default.php)中,您可以将其添加到您的页面中,例如
echo $this->addQuestion;
当您单击提交按钮时,您可以重新路由回相同的视图。所以用户一个像这样的网址
index.php?option=com_faq&task=addQuestion&view=default
所以在标记页面之前(例如在显示函数的前几行),您可以在前端获取用户输入的内容
$question = JRequest::getVar('addRequest', null);
一旦你有了这个,你可以将它存储到你的数据库中或显示它。或者,您可以 AJAX 提交您的表单并在控制器函数中处理它,这样您就没有刷新等。
您需要编辑您的 router.php 文件以获取任务并将其传递给您的控制器,即将其设置为任务或视图。
有很多选择,但基本上你需要 3 件事:
- 在 view.html.php 文件中创建标记并为其分配引用
- 在模板中包含参考,即 default.php
- 将表单提交到同一组件可以处理的地址,即 index.php?option=com_faq&task=addQuestion&view=default
希望这会有所帮助:)