我正在尝试使用前端的taggingJS和后端的laravel-tagging构建标记系统。我让他们两个单独工作,但我无法获得taggingJS生成的标签进入数据库。
我的Laravel控制器如下所示:
public function storeData(Request $request)
{
$link = new Links;
$link->tag_name = $request->taggone;
$link->save();
$link->tag(explode(',', $request->taggone));
$link->save();
return view('pages.postdata', compact('tags'));
}
HTML代码如下所示:
<div class="example-wrapper">
<div class="tags well">
<label for="tag" class="control-label">Tag</label>
<div data-tags-input-name="taggone" id="tag"></div>
</div>
</div>
我留下标记JS&#39; Javascript保持不变(我不确定它是否与此问题相关):
<script>
// jQuery on Ready example
(function( $, window, document, undefined ) {
$( document ).ready(function() {
var t = $( "#tag" ).tagging();
t[0].addClass( "form-control" );
// console.log( t[0] );
});
})( window.jQuery, window, document );
</script>
如果我理解正确,输入到字段taggone
的标签应该由控制器请求并保存到数据库中。但是当我提交表单时,我收到错误:
类型错误:参数1传递给 Illuminate \ Database \ Grammar :: parameterize()必须是类型数组, 给出的字符串,调用 /home/vagrant/Code/Laravel/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php 在第678行
我可以就如何让它发挥作用提出建议吗?
答案 0 :(得分:1)
看起来您正在从表单传递字符串(而不是数组)。尝试通过将 [] 添加到 taggone 输入来调整html
,如下所示:
<div data-tags-input-name="taggone[]" id="tag"></div>
如果您仍然收到相同的错误,请在某处发布完整的错误消息。
答案 1 :(得分:1)
你可以这样做
public function storeData(Request $request)
{
$link = new Links;
$link->tag_name = $request->taggone;
$link1 = $link->save(); //Store it to a variable
//If your $request->taggone already an array you don't have to explode it, directly use $link1->tag($request->taggone);
// Explode if it's a string and use $link1->tag(explode(',', $request->taggone));
$link1->tag($request->taggone); //In case $request->taggone array
//OR
$link1->tag(explode(',', $request->taggone)); //In case $request->taggone string
$link1->save();
return view('pages.postdata', compact('tags'));
}