【问题标题】:Laravel 5.5 - sendResetLinkEmail not working through API routeLaravel 5.5 - sendResetLinkEmail 无法通过 API 路由工作
【发布时间】:2018-09-01 08:57:57
【问题描述】:

我正在尝试通过 API 路由在 Laravel 5.5 中触发密码重置电子邮件,到目前为止我有这个控制器

<?php

namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;

use Illuminate\Support\Facades\Response;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;

class ForgotPasswordController extends Controller
{

    use SendsPasswordResetEmails;

    public function sendResetLinkEmail(Request $request) {

        if($request->input('email')) {
            $this->sendResetLinkEmail($request->input('email'));
        }

        /* Return Success Response */
        return Response::json(array(
            'error' => false,
            'status_code' => 200,
            'response' => 'forgotten_pass_request',
            'email' => $request->input('email'),
        ));

    }

}

但是当我尝试通过电子邮件发送 API 请求时,我收到了错误

"message": "Type error: Argument 1 passed to App\\Http\\Controllers\\Api\\ForgotPasswordController::sendResetLinkEmail() must be an instance of Illuminate\\Http\\Request, string given, called in /home/myapp/myapp/app/Http/Controllers/Api/ForgotPasswordController.php on line 23",

有人知道我做错了什么吗?

【问题讨论】:

  • 你在错误中有答案。您需要不同的 api 路由
  • 如果你仔细观察,这个函数会以递归方式调用自己

标签: laravel laravel-5


【解决方案1】:

然后将函数名称更改为其他名称

class ForgotPasswordController extends Controller
{

    use SendsPasswordResetEmails;

    public function changedTheName(Request $request) {

        if($request->input('email')) {
            $this->sendResetLinkEmail($request);
        }

        /* Return Success Response */
        return Response::json(array(
            'error' => false,
            'status_code' => 200,
            'response' => 'forgotten_pass_request',
            'email' => $request->input('email'),
        ));

    }

}

您的代码以递归方式调用自身。 然后你就可以走了。

希望有帮助

【讨论】:

  • 错误现在消失了,但是邮件没有被发送,如果 $this->sendResetLinkEmail($request);那么它是如何知道要发送到哪个电子邮件地址的呢?
  • 如果我把 $this->sendResetLinkEmail($request->input('email') );回到然后错误返回
猜你喜欢
  • 2019-04-02
  • 2018-04-30
  • 2018-12-17
  • 2018-08-05
  • 2018-03-25
  • 2018-08-31
  • 2015-07-10
  • 1970-01-01
  • 2018-01-17
相关资源
最近更新 更多