Laravel 5:将控制器传递给控制器

时间:2016-01-17 16:30:01

标签: php laravel

我认为我想要的是非常基本的,因为我还在学习Laravel,所以我找不到合适的语法。

所以,我在我的网站上使用谷歌验证登录。这需要对我的后端发出必须处理的post请求,我已将此逻辑放在控制器中。我的routes.php:

Route::post('google' ,  [
    'as' => 'verify.index',
    'uses' => 'verify@verifyIdToken'
]);

我的控制器(verify.php):

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;

class verify extends Controller
{
    public function verifyIdToken($token)
    {
        $token = $_POST['id'];
        $email = $_POST['email'];
        return $this->getAuth()->verifyIdToken($token);
        echo $this->getAuth()->verifyIdToken($token);
        return view('aviewII')->with(['verify' => json_encode(verifyIdToken($token)),'email'=> json_encode($email)]);
    }
}

当然,由于控制器中的函数是如何编写的,我得到以下错误Missing argument 1 for App\Http\Controllers\verify::verifyIdToken()我的问题是,如何告诉控制器中的函数将$_POST['id']作为参数对于$token

这样的事情:

Route::post('google' ,  [
        'as' => 'verify.index',
        'uses' => 'verify@verifyIdToken ~with $_POST['id'] as $token'
    ]);

如需其他参考,我的实际发帖请求如下:

$.post( "http://example.com/google", {email:profile.getEmail(),id:id_token} );

2 个答案:

答案 0 :(得分:2)

控制器方法:

public function verifyIdToken(Request $request)
{
    // Not necessary but a better practice for ajax 'POST' responses.

    if($request->ajax() &&  $request->isMethod('post'))
    {
        return $request::get('token');
    }
}

路线:

Route::post('google', ['as' => 'some.alias', 'uses' => 'SomeController@verifyIdToken']);

答案 1 :(得分:1)

您正在寻找Laravel的request课程。您应该在方法上键入提示类,然后允许大量选项实际获取数据。类似的东西:

use Illuminate\Http\Request;

public function verifyIdToken(Request $request)
{
    $token = $request->input('id');
    $email = $request->input('email');
    return $this->getAuth()->verifyIdToken($token);
    echo $this->getAuth()->verifyIdToken($token);
    return view('aviewII')->with(['verify' => json_encode(verifyIdToken($token)),'email'=> json_encode($email)]);
}

documentation on it有更多有用的信息。

相关问题