我有一条路线:
Route::get('activate/{key}', function($key) {
Login::activateAccount($key);
})->where('key', '[a-z0-9]{40}');
和activateAccount
内部操作我尝试重定向到另一条路线:
public static function activateAccount($key) {
$affectedRows = User::where('activation_code', '=', $key)->update(array('is_active' => 1));
if ($affectedRows > 0) {
return Redirect::to('/signin')->with('activatedAccount', 'Your account is activated. You can sign in now.');
}
}
但它没有重定向,只是向我显示一个空白页面,而不是我从Firebug获得的响应 - > Net->响应是:
重新加载页面以获取源:localhost / myProject / public / activate / 89b322bc6da6bbfd0c690c0f6bee2d2adebc9a8a
更新:当此代码在路由中时,它可以正常工作。
Update2:这是视图
<div>
{{ Session::get('activatedAccount') }}
{{ Session::get('serverError') }}
</div>
{{ Form::open(array('action' => 'Login@signIn', 'method' => 'post')) }}
<input type="text"
name="email"
placeholder="Email" />
<input type="password"
name="password"
placeholder="Password" />
<input type="submit"
value="Sign In" />
{{ Form::close() }}
{{ link_to('choose_signup', 'Sign Up', $secure = null) }}
@foreach ($errors->all() as $message)
<div>
{{ $message }}
</div>
@endforeach
答案 0 :(得分:1)
您必须向应用程序返回一些内容:视图或响应,在这种情况下,您将从激活方法返回响应,但不会将其返回到控制器中的应用程序:
Route::get('activate/{key}', function($key) {
return Login::activateAccount($key);
})->where('key', '[a-z0-9]{40}');
而且,出于测试目的,如果false
也是最好的话,你最好在这里留言:
public static function activateAccount($key) {
$affectedRows = User::where('activation_code', '=', $key)->update(array('is_active' => 1));
if ($affectedRows > 0) {
return Redirect::to('/signin')->with('activatedAccount', 'Your account is activated. You can sign in now.');
}
return 'User was not activated.';
}
在您看来,这是您从重定向获取消息的方式:
{{ Session::get('activatedAccount') }}