Laravel 5:发布 - 将参数传递给控制器


Laravel 5: Post - Pass Arguments To Controller

我认为我想要的是非常基本的,我只是找不到正确的语法,因为我仍在学习Laravel。

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

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

我的控制器(验证.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} );

控制器方法:

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']);

您正在寻找 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)]);
}

关于它的文档有更多有用的信息。