在 Laravel 中从 JavaScript 调用模型函数
Call model function from JavaScript in Laravel
我实际上 运行 遇到了我当前项目的小问题。以下案例:
我有一个名为 "Posting" 的模型,其关系为:
public function subscribers(){
return $this->belongsToMany('User');
}
在我的视图文件中,有一个 table 包含所有帖子,还有一个 subscribing/unsubscribing 的复选框,其值与帖子 ID 匹配:
<input class="click" type="checkbox" name="mobileos" value="{{{$posting->id}}}"
@if($posting->subscribers->find(Auth::User()->id))
checked="checked"
@endif
>
现在我要存档的东西:
A JavaScript 将监视复选框是否被选中。据此,当前用户 subscribes/unsubscribes 发帖。类似于:
$('.click').on('click',function() {
// $posting->find(---$(this).prop('checked')---)->subscribers()->attach(---Auth::user()->id---);
// $posting->find(---$(this).prop('checked')---)->subscribers()->detach(---Auth::user()->id---);
});
有没有可能以这种方式或任何其他方式实现?到目前为止,我无法理解这个问题。
干杯,
克里斯
如果您想使用 Ajax 实现此目的,您将需要 Laravel 中的 REST 端点用于订阅,例如:
http://localhost/subscribe/{{userid}}
调用此端点时,可以更新数据库。该函数还可以return一个JSON显示,如果在数据库中保存数据库成功。
使用此端点进行 Ajax 点击调用:
var user = {
id: 0 // retrieve the correct ID from wherever it is stored
}
$('.click').on('click',function() {
$.GET('http://localhost/subscribe/' + user.id,
function () { // this is the success callback, that is called, if the Ajax GET did not return any errors
alert('You are subsribed')
});
});
理想情况下,您不会使用 GET 方法,而是 使用 POST 并将用户 ID 作为数据发送。此外,您还需要从会话或存储它的任何地方检索用户 ID。
请注意,在您使用 Ajax 时,它可以很容易地从客户端进行操作。所以在服务器上你应该检查发送的用户 ID 是否与会话中的相同。也许您根本不需要发送用户 ID,但这取决于您的后端是如何构建的。
我实际上 运行 遇到了我当前项目的小问题。以下案例:
我有一个名为 "Posting" 的模型,其关系为:
public function subscribers(){
return $this->belongsToMany('User');
}
在我的视图文件中,有一个 table 包含所有帖子,还有一个 subscribing/unsubscribing 的复选框,其值与帖子 ID 匹配:
<input class="click" type="checkbox" name="mobileos" value="{{{$posting->id}}}"
@if($posting->subscribers->find(Auth::User()->id))
checked="checked"
@endif
>
现在我要存档的东西:
A JavaScript 将监视复选框是否被选中。据此,当前用户 subscribes/unsubscribes 发帖。类似于:
$('.click').on('click',function() {
// $posting->find(---$(this).prop('checked')---)->subscribers()->attach(---Auth::user()->id---);
// $posting->find(---$(this).prop('checked')---)->subscribers()->detach(---Auth::user()->id---);
});
有没有可能以这种方式或任何其他方式实现?到目前为止,我无法理解这个问题。
干杯, 克里斯
如果您想使用 Ajax 实现此目的,您将需要 Laravel 中的 REST 端点用于订阅,例如:
http://localhost/subscribe/{{userid}}
调用此端点时,可以更新数据库。该函数还可以return一个JSON显示,如果在数据库中保存数据库成功。
使用此端点进行 Ajax 点击调用:
var user = {
id: 0 // retrieve the correct ID from wherever it is stored
}
$('.click').on('click',function() {
$.GET('http://localhost/subscribe/' + user.id,
function () { // this is the success callback, that is called, if the Ajax GET did not return any errors
alert('You are subsribed')
});
});
理想情况下,您不会使用 GET 方法,而是 使用 POST 并将用户 ID 作为数据发送。此外,您还需要从会话或存储它的任何地方检索用户 ID。
请注意,在您使用 Ajax 时,它可以很容易地从客户端进行操作。所以在服务器上你应该检查发送的用户 ID 是否与会话中的相同。也许您根本不需要发送用户 ID,但这取决于您的后端是如何构建的。