我目前正在构建评论系统,并希望能够提及用户并标记它们,随后我希望该标记有一个指向其个人资料的链接(在此示例中,它是' s just / profile / {id})
我目前正在使用Laravel提及从我的用户模型生成自动填充列表。我这样做:
function enableMentions(elem, type, column) {
$(elem).atwho({
at: "@",
limit: 5,
displayTpl: '<li><span>${name}</span></li>',
insertTpl: '<a href="/profile/${name}" data-type="mentionable" data-id="${id}" data-name="${name}">${name}</a>',
callbacks: {
remoteFilter: function(query, callback) {
if (query.length <= 1) return;
$.getJSON("/api/mentions/" + type, {
q: query,
c: column
}, function(data) {
callback(data);
});
}
}
});
}
// My api/mentions route: Route::get('/api/mentions/{type}', 'ApiController@index');
//My api controller:
public function index($type, Request $request)
{
try {
$resultColumns = [];
$query = $request->get('q');
$column = $request->get('c');
$model = app()->make(config('mentions.' . $type));
$records = $model->where($column, 'LIKE', "%$query%")
->get();
foreach ($records as $record) {
$resultColumns[] = $record->$column;
}
return response()->json($resultColumns);
} catch (\ReflectionException $e) {
return response()->json('Not Found', 404);
}
}
And finally, initializing the at.js
<script type="text/javascript">
$(function(){
enableMentions("#mention-commentContent", "users", "Username");
});
</script>
<div contentEditable="true" id="mention-commentContent" class="user-form" name="commentContent" type="text"></div>
我对如何修改上述内容以返回用户名和分配给他们的ID感到困惑,这样我就可以将$ {name}更改为$ {id}并将其链接到他们的个人资料,对吗?
答案 0 :(得分:0)
此软件包可以帮助Laravel Mentions或this。
基本思想是通过JSON从数据库中获取用户名,以下是他们在laracasts中使用它的方式:
$("textarea#body").atwho({
at: "@", limit: 5, callbacks: {
remoteFilter: function (t, e) {
t.length <= 2 || $.getJSON("/api/users", {q: t}, function (t) {
e(t)
})
}
}
})