Laravel 4从控制器重定向不起作用

时间:2013-12-20 08:46:13

标签: php laravel laravel-4

我有一条路线:

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

1 个答案:

答案 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') }}