Moodle multi-select:链接项目
我试图在Moodle数据库中使用multi-select表单元素来生成标记列表。我希望这些标签链接到显示过滤结果的相关搜索页面 以下模板代码适用于单个标记的项目,但不适用于具有多个标记的项目:Moodle multi-select:链接项目,moodle,Moodle,我试图在Moodle数据库中使用multi-select表单元素来生成标记列表。我希望这些标签链接到显示过滤结果的相关搜索页面 以下模板代码适用于单个标记的项目,但不适用于具有多个标记的项目: <a href='/view.php?mode=list&filter=[[Tags]]'>[[Tags]]</a> 有没有一种方法可以在多选模式中循环项目?比如: [[for Tag in Tags]] <a href='/view.php?mode=list
<a href='/view.php?mode=list&filter=[[Tags]]'>[[Tags]]</a>
有没有一种方法可以在多选模式中循环项目?比如:
[[for Tag in Tags]] <a href='/view.php?mode=list&filter=[[Tag]]'>[[Tag]]</a> [[/for]]
[[for Tags in Tags][[/for]]
我不确定使用上述方法是否有一种简单的方法来实现这一点。尽管如此,我还是拼凑了一些javascript来完成同样的任务:
function init() {
var tags = document.getElementsByClassName('tags');
for (var i=0; i<tags.length; i++) {
tags[i].innerHTML = tags[i].innerHTML.replace(/\w[\w\s]+?(?=<br>)/g, function(n) {
return "<a href='view.php?d=16&mode=list&perpage=10&filter=1&f_81%5B%5D="+ escape(n) + "'>" + n + "</a>";
});
}
};
window.onload = init;
函数init(){
var tags=document.getElementsByClassName('tags');
对于(var i=0;i,假设您有一个edit\u form.php
,类似于
defined('MOODLE_INTERNAL') || die;
require_once($CFG->libdir . '/formslib.php');
class edit_form extends moodleform {
public function definition() {
$mform =& $this->_form;
$options = array('red' => 'red', 'blue' => 'blue', 'green' => 'green');
$select = $mform->addElement('select', 'tags', get_string('tags'), $options);
$select->setMultiple(true);
$this->add_action_buttons(false, get_string('submit'));
}
}
然后在您的edit.php
文件中使用它
require_once(dirname(__FILE__) . '/edit_form.php');
...
$mform = new edit_form();
$mform->display();
if ($formdata = $mform->get_data()) {
foreach ($formdata->tags as $tag) {
$url = new moodle_url('/view.php', array('mode' => 'list', 'tag' => $tag));
echo html_writer::link($url, $tag);
}
}