我是新接触laravel 5.4的,我正在尝试练习一些laravel的东西。我想创建一个电子邮件验证功能,当申请者注册和验证他/她的电子邮件时,申请者可以登录。但是当我点击下面的链接来验证申请者的电子邮件地址时,我遇到了这个错误。我不知道是不是我搞乱了路线,很难解决这个问题。以下是用于验证电子邮件地址http://127.0.0.1:8000/register/verify/KafEACL1U3DxoprDI0aIVpAyM3DY8Q的链接。
以下是我的路径中的代码:
Route::group(['prefix' => 'applicant', 'namespace' => 'Applicant'], function () {
Route::get('/', 'LoginController@showLoginForm');
Route::post('/login', 'LoginController@authenticate')->name('applicant.login');
Route::post('/logout', 'LoginController@logout')->name('logout');
Route::get('/home', 'HomeController@index')->name('applicant.home');
Route::get('/signup', 'LoginController@signup')->name('applicant.signup');
Route::post('/register_check', 'LoginController@store')->name('register_check');
Route::resource('applications', 'ApplicationController',
['as' => 'applicant']);
Route::get('/verify', 'LoginController@confirm')->name('applicant.verify');
//secured file view only by customer-relations
Route::get('applications/print/{application_number}', [
'as' => 'applicant.application-form.print',
'uses' => 'ApplicationController@printApplicationConfirmation',
]);
});下面是我的控制器中的代码:
public function store(CreateApplicantRequest $request)
{
$input = $request->all();
$confirmation_code = str_random(30);
$data = array('confirmation_code'=>$confirmation_code);
$applicants = $this->applicantRepository->create([
'name' => $input['name'],
'email' => $input['email'],
'password' => bcrypt($input['password']),
'address' => $input['address'],
'cellphone_no' => $input['cellphone_no'],
'confirmation_code' => $confirmation_code
]);
Mail::send('applicant-dashboard.verify', compact('confirmation_code'), function($message) {
$message->to(Input::get('email'), Input::get('name'))
->subject('Verify your email address');
});
Flash::message('Thanks for signing up! Please check and verify your email.');
return redirect(url('applicant'));
}
public function confirm($confirmation_code)
{
if( ! $confirmation_code)
{
throw new InvalidConfirmationCodeException;
}
$applicant = Applicant::whereConfirmationCode($confirmation_code)->first();
if ( ! $user)
{
throw new InvalidConfirmationCodeException;
}
$applicant->confirmed = 1;
$applicant->confirmation_code = null;
$applicant->save();
Flash::message('You have successfully verified your account.');
return Redirect::url('applicant');
}发布于 2017-08-07 09:46:59
将您的验证链接更改为:
http://127.0.0.1:8000/register/verify/KafEACL1U3DxoprDI0aIVpAyM3DY8Q至
http://127.0.0.1:8000/applicant/register/verify/KafEACL1U3DxoprDI0aIVpAyM3DY8Q因为您的路由属于前缀为applicant的组
另外,将验证路由编辑为如下所示:
Route::get('/register/verify/{confirmation_code}', 'LoginController@confirm')->name('applicant.verify');不要忘记在控制器文件的顶部,在名称空间行之后使用此导入:
use App\Exceptions\InvalidConfirmationCodeException;这是因为laravel使用psr-4自动加载,这意味着InvalidConfirmationCodeException异常类在'app/Exceptions'文件夹下。
发布于 2017-08-08 05:07:05
您的路由文件中没有路由寄存器/verify/{confirmation_code},请这样添加:
Route::get('register/verify/{confirmation_code}', ['as' => 'applicant.verify' => 'uses' => 'LoginController@confirm');https://stackoverflow.com/questions/45538339
复制相似问题