运行 来自 html 锚点的模型方法
Running model method from html anchor
我如何 运行 从锚标记中建模方法?
当我使用此代码时:
<a href="{{Auth::user()->sendFriendRequest($user)}}" role="button" class="btn btn-primary"><i class="fa fa-btn fa-plus"></i></a>
函数如下:
public function sendFriendRequest(User $user)
{
DB::table('friends_users')
->where('user_id', Auth::user()->id)
->where('friend_id', $user->id)
->update(['who_send' => Auth::user()->id]);
}
在我进入页面时运行 运行s,但在单击锚点时不运行。
感谢您的帮助:)
恐怕这是不可能的,因为 PHP 代码是在呈现该页面的 HTML 时生成的。这会导致您描述的行为;该函数在页面加载时运行。如果您希望代码在单击按钮时执行,则不能使用 PHP 这样的服务器端语言来完成。为此,您必须使用像 JavaScript 这样的客户端语言。
此类操作通常使用以下模式实现:
- 点击按钮会触发 AJAX 请求,使用 JavaScript。
- AJAX 请求是一个 PHP 脚本,其中包含您在 post 中描述的代码。结果主要返回为 JSON.
- 您的 JavaScript 函数验证步骤 2 返回的 JSON 并采取相应行动,例如显示成功消息。
你做的不对。 PHP 或 Laravel 函数不能通过锚标记的 href 运行。
您可以通过以下方式完成:
在您的 blade 或 HTML 文件中
<a href="{{url('send-friend-request'.'/'.$user->id)}}" role="button" class="btn btn-primary"><i class="fa fa-btn fa-plus"></i></a>
在您的路线文件中,即 web.php
Route::get('send-friend-request/{user_id}', function($user_id){
DB::table('friends_users')
->where('user_id', Auth::user()->id)
->where('friend_id', $user_id)
->update(['who_send' => Auth::user()->id]);
return back(); // or return redirect('any-url-here');
});
我在web.php里写的函数,你也可以把这个函数写在Controller文件里
编辑
在上面的函数中,您可以将用户重定向回或任何指定的 url。 https://laravel.com/docs/5.4/responses#redirects
我如何 运行 从锚标记中建模方法? 当我使用此代码时:
<a href="{{Auth::user()->sendFriendRequest($user)}}" role="button" class="btn btn-primary"><i class="fa fa-btn fa-plus"></i></a>
函数如下:
public function sendFriendRequest(User $user)
{
DB::table('friends_users')
->where('user_id', Auth::user()->id)
->where('friend_id', $user->id)
->update(['who_send' => Auth::user()->id]);
}
在我进入页面时运行 运行s,但在单击锚点时不运行。 感谢您的帮助:)
恐怕这是不可能的,因为 PHP 代码是在呈现该页面的 HTML 时生成的。这会导致您描述的行为;该函数在页面加载时运行。如果您希望代码在单击按钮时执行,则不能使用 PHP 这样的服务器端语言来完成。为此,您必须使用像 JavaScript 这样的客户端语言。
此类操作通常使用以下模式实现:
- 点击按钮会触发 AJAX 请求,使用 JavaScript。
- AJAX 请求是一个 PHP 脚本,其中包含您在 post 中描述的代码。结果主要返回为 JSON.
- 您的 JavaScript 函数验证步骤 2 返回的 JSON 并采取相应行动,例如显示成功消息。
你做的不对。 PHP 或 Laravel 函数不能通过锚标记的 href 运行。
您可以通过以下方式完成:
在您的 blade 或 HTML 文件中
<a href="{{url('send-friend-request'.'/'.$user->id)}}" role="button" class="btn btn-primary"><i class="fa fa-btn fa-plus"></i></a>
在您的路线文件中,即 web.php
Route::get('send-friend-request/{user_id}', function($user_id){
DB::table('friends_users')
->where('user_id', Auth::user()->id)
->where('friend_id', $user_id)
->update(['who_send' => Auth::user()->id]);
return back(); // or return redirect('any-url-here');
});
我在web.php里写的函数,你也可以把这个函数写在Controller文件里
编辑 在上面的函数中,您可以将用户重定向回或任何指定的 url。 https://laravel.com/docs/5.4/responses#redirects