我的网站有一个上传页面,该页面具有一个表单,并且其中一个输入用于这样的标记:
<div class="form-group">
<label class='label' for="artwork-tags">Tags</label>
<input class='input' type="text" name="artwork-tags" placeholder="Tags" value='{{ Request::old('artwork-tags') }}'>
@include('partials.invalid', ['field' => 'artwork-tags'])
</div>
然后我使用以下命令在服务器端获取标签:
$tagsRaw = $request->input('artwork-tags');
这是我实际问题的起点。我发现了一个用于标签输入样式的代码片段,在您键入逗号(,)后,这些标签将书面标签分隔在它们自己的容器中。但是,如您在Codepen中所见,标签输入只是一个:
<div class="tags-input"></div>
没有表格,没有输入,没有提交,什么也没有。这就是为什么我想知道我什至如何获得在服务器端该div内写入的标签?
答案 0 :(得分:1)
对我来说可能是一个加载问题。我拉出代码并将其添加到页面中,效果很好。
所以...由于这可能更多是Javascript问题,而不是Laravel问题,我建议您在页面上拉起源代码,并确保同时加载了CSS和JS。
这是由JS驱动的,但是您需要在服务器端处理传入的项目。进行此设置的最简单方法是转储您的请求对象(dd($request->all()
),然后查看特定于标记的变量。从服务器端,您将需要编写代码来接受这些标签,并查看它们是否已经存在。如果不是,请在数据库中创建一个新的,并获取其新ID。如果已经存在,则根据字符串匹配从数据库中获取退出标签的ID。
类似的东西:
$existing_tags = \App\Tag::pluck('name', 'id')->toArray();
foreach(//on $request->get('tags')){
//Loop to see if name is already in $existing_tags[] - if not, create new tag -- if so, pull ID and attach
}
对于没有格式,没有输入等的问题,答案很可能是您没有引入整个js库或任何依赖项,如果上述转储不起作用,则为 。另外,从您的问题中并不清楚要指出的是什么意思,但是请记住,这只是表单代码的 part 。您仍然需要提供正常的Laravel路线和表格的标准其余部分(例如,提交按钮等)。