2016-01-17 4 views
1

Я думаю, что я хочу довольно просто, я просто не могу найти правильный синтаксис, поскольку я все еще изучаю Laravel.Laravel 5: Post-Pass Arguments To Controller

Итак, я использую проверку Google для входа в систему на своем веб-сайте. Это влечет за собой отправку запроса на мой бэкэнд, который должен быть обработан, я поставил эту логику в контроллер. Мой routes.php:

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

Мой контроллер (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' => '[email protected] ~with $_POST['id'] as $token' 
    ]); 

Для получения дополнительной справки, мой фактический запрос пост выглядит следующим образом: метод

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

ответ

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 имеет тонны больше полезной информации.

1

Контроллер:

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' => '[email protected]']);