老葛:
我这里有个自定义的表单,其中有一项是让用户自己输入tags,用逗号隔开的。但我不清楚怎么入库以及写入url alias。代码片断如下:
if(isset($content['group_tags'])){
$group_tags = trim($content['group_tags']);
$group_tags = str_replace(',', ',', $group_tags);
$arr_tags = explode(',', $group_tags);
if(!empty($arr_tags)){
$vid = db_query("SELECT vid FROM {taxonomy_vocabulary} WHERE machine_name = 'group_tags'")->fetchField();
foreach ($arr_tags as $key=>$tag) {
$tag = trim($tag);
//只匹配中文,英文的tags
if(!empty($tag) && preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z]{2,}$/u",$tag)){
if ($term = taxonomy_get_term_by_name($tag)) {
$terms_array = array_keys($term);
$node->field_group_tags[LANGUAGE_NONE][$key]['tid'] = $terms_array['0'];
} else {
$term = new stdClass();
$term->name = $tag;
$term->vid = intval($vid);
$term = taxonomy_term_save ( $term );
$tid = intval($term->tid);
$node->field_group_tags[LANGUAGE_NONE][$key]['tid'] = $tid;
}
}
}
}
}
这样写玩后,当用户输入“恭喜,发财”的时候,taxonomy_term_data正常,但field_group_tags却只保存第一个tid=11的,第二个却没有保存。不知道为什么了?
打印$node->field_group_tags[LANGUAGE_NONE]的结果为:
Array
(
[0] => Array
(
[tid] => 11
)
[1] => Array
(
[tid] => 12
)
)
如果您有现成的例子就好了,我在您的几本书中,还没找到这方面的教程呢!
谢谢!
,这个逗号是中文形式下的,你需要替换为英文形式下的: ,
,这个逗号是中文形式下的,你需要替换为英文形式下的:
,
明白了吧。
我中文,英文都试过了,即使是输入中文的,我在代码里也处理成
我中文,英文都试过了,即使是输入中文的,我在代码里也处理成中文的逗号了,
$group_tags = str_replace(',', ',', $group_tags);
这是代码,为什么还是不能两个以上的tag同时保存入库呢?
请问上面的代码,在逻辑上有错吗?谢谢了!
逻辑上,是没有问题的,应该是细节哪里出了问题。你可以将程序
逻辑上,是没有问题的,应该是细节哪里出了问题。你可以将程序分为两部分,
一部分,用来从表单获取值
第二部分,用来将值保存到数据库中。
比如先检测第二部分的程序是正确的,确实能够保存。然后将传递过来的值从静态的,改为从表单获取。
谢谢老葛,我再检查一下。
谢谢老葛,我再检查一下。