使用重定向类时拉拉维尔白屏


Laravel white screen when using Redirect Class

当我在处理数据后尝试使用 Laravel 重定向类重定向用户时,我目前出现白屏死机。如果我使用本机 php-function header("location..."),应用程序会正确响应并以愉快的方式发送用户,但使用 Laravel 的重定向类,网站崩溃并出现白屏死机。我已经尝试了重定向::action和重定向::到功能,但它们都会导致同样令人恼火的白屏死机。拉拉维尔.log什么也没显示...

有人有什么想法吗?

下面是数据处理程序控制器类的代码:

<?php
class ManagerLayoutDataController extends BaseController 
{
public function route($action, $moduleID) {
    if(method_exists('ManagerLayoutDataController',$action)) {
        $this->$action($moduleID);
    }
    // Invalid action (method not found)
    else {
        die('Action routing error');
        //return Redirect::to('/');
    }
}
public function updateHeaderBg($moduleID) {
    $image = Input::file('img');
    $user = Auth::user();
    $siteID = $user->getSiteID();
    $layoutDataMessage = null;
    // Validate file upload (NOT FILE CHARACTERISTICS)
    if(Input::hasFile('img') && $image->isValid() && isset($siteID) && $siteID !== "") {
        $res = ManagerFileUpload::uploadImage($siteID, $image);
        if($res->success) {
            $fileName = $res->fileName;
            $dbViewModule = ViewModuleRepository::getModule($moduleID);
            if($dbViewModule->type === DBViewModule::MODULE_TYPE_HEADER) {
                $headerModule = new HeaderModule($dbViewModule);
                $headerModule->updateBgImage($fileName);
                $layoutDataMessage = new LayoutDataMessage(LayoutDataMessage::STATUS_SUCCESS,"");
            }
        }
        else {
            $layoutDataMessage = new LayoutDataMessage(LayoutDataMessage::STATUS_FAIL,$res->message);
        }
    }
    else {
        $layoutDataMessage = new LayoutDataMessage(LayoutDataMessage::STATUS_FAIL, "Bilden kunde inte laddas upp.");
    }
    if($layoutDataMessage != null) {
        return Redirect::action('ManagerLayoutController@main')->with('message',$layoutDataMessage);
        //return Redirect::to('manager/layout/');
        //header('location: */manager/layout');
    }
    else {
        return Redirect::action('ManagerLayoutController@main')->with('message',LayoutDataMessage(LayoutDataMessage::STATUS_FAIL, "Bilden kunde inte laddas upp."));
        //return Redirect::to('manager/layout/');
        //header('location: */manager/layout');
    }
}
}

主控制器


<?php
class ManagerLayoutController extends BaseController 
{
    public function main() {
        $user = Auth::user();
        $siteID = $user->getSiteID();
        $moduleComposition = ViewModuleCompositionRepository::getCurrentInWorkModuleComposition($siteID);
        $dbViewModules = ViewModuleRepository::getModulesFromComposition($moduleComposition->id);
        $viewModules = array();
        foreach($dbViewModules as $dbViewModule) {
            switch($dbViewModule->getType()) {
                case DBViewModule::MODULE_TYPE_HEADER:
                    $viewModules[] = new HeaderModule($dbViewModule);
                    break;
                case DBViewModule::MODULE_TYPE_TEXT_SECTION:
                    $viewModules[] = new TextSectionModule($dbViewModule);
                    break; 
                case DBViewModule::MODULE_TYPE_KEY_METRICS:
                    $viewModules[] = new KeyMetricsModule($dbViewModule);
                    break;
                case DBViewModule::MODULE_TYPE_SLIDESHOW:
                    $viewModules[] = new SlideShowModule($dbViewModule);
                    break;
                case DBViewModule::MODULE_TYPE_VACANCIES:
                    $viewModules[] = new VacanciesModule($dbViewModule);
                    break;
                case DBViewModule::MODULE_TYPE_EMAIL_SUBSCRIPTION:
                    $viewModules[] = new EmailSubscriptionsModule($dbViewModule);
                    break;
                case DBViewModule::MODULE_TYPE_CO_WORKERS:
                    $viewModules[] = new CoworkersModule($dbViewModule);
                    break;
                case DBViewModule::MODULE_TYPE_NEWS_SECTION:
                    $viewModules[] = new NewsModule($dbViewModule);
                    break;
                case DBViewModule::MODULE_TYPE_INSTAGRAM_FEED:
                    $viewModules[] = new KeyMetricsModule($dbViewModule);
                    break;
                case DBViewModule::MODULE_TYPE_SOCIAL_MEDIA:
                    $viewModules[] = new KeyMetricsModule($dbViewModule);
                    break;
            }
        }
        $data = array(
            'siteID' => $siteID,
            'viewModules' => $viewModules
        );
        return View::make('dashboard.pages.manager.layout_main',$data);
    }
}

过滤器.php


<?php
/*
|--------------------------------------------------------------------------
| Application & Route Filters
|--------------------------------------------------------------------------
|
| Below you will find the "before" and "after" events for the application
| which may be used to do any work before or after a request into your
| application. Here you may also register your custom route filters.
|
*/
App::before(function($request)
{
    //
});

App::after(function($request, $response)
{
    //
});
/*
|--------------------------------------------------------------------------
| Authentication Filters
|--------------------------------------------------------------------------
|
| The following filters are used to verify that the user of the current
| session is logged into this application. The "basic" filter easily
| integrates HTTP Basic authentication for quick, simple checking.
|
*/
Route::filter('auth', function()
{
    if (Auth::guest())
    {
        if (Request::ajax())
        {
            return Response::make('Unauthorized', 401);
        }
        else
        {
            return Redirect::guest('login');
        }
    }
});

Route::filter('auth.basic', function()
{
    return Auth::basic();
});
/*
|--------------------------------------------------------------------------
| Guest Filter
|--------------------------------------------------------------------------
|
| The "guest" filter is the counterpart of the authentication filters as
| it simply checks that the current user is not logged in. A redirect
| response will be issued if they are, which you may freely change.
|
*/
Route::filter('guest', function()
{
    if (Auth::check()) return Redirect::to('/');
});
/*
|--------------------------------------------------------------------------
| CSRF Protection Filter
|--------------------------------------------------------------------------
|
| The CSRF filter is responsible for protecting your application against
| cross-site request forgery attacks. If this special token in a user
| session does not match the one given in this request, we'll bail.
|
*/
Route::filter('csrf', function()
{
    if (Session::token() != Input::get('_token'))
    {
        throw new Illuminate'Session'TokenMismatchException;
    }
});

/** Admin pages */
Entrust::routeNeedsRole( 'admin*', 'Admin', Redirect::to('/login'));

/** Manage pages */
Entrust::routeNeedsRole( 'manager*', array('Super Manager','Manager'), Redirect::to('/login'), false );

/**
 * Check view module ownership before editing data
 */
Route::filter('viewmodule.ownership', function($route) {
    $user = Auth::user();
    $siteID = $user->getSiteID();
    $moduleID = $route->getParameter('moduleID');
    // Check that the module with $moduleID belongs to $siteID
    if(ViewModuleRepository::moduleBelongToSite($moduleID, $siteID)) {
    }
    // Unauthorized access
    else {
        die('Filter error');
        //Redirect::to('/');
    }
});

路线.php

<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/
Route::get('/', 'FrontController@main');
Route::get('/manager', 'ManagerHomeController@home');
Route::get('/manager/statistics', 'ManagerStatisticsController@main');
Route::get('/manager/resume-manager', 'ManagerResumeController@main');
Route::get('/manager/resume-manager/pending', 'ManagerResumeController@resumesPending');
Route::get('/manager/resume-manager/approved', 'ManagerResumeController@resumesApproved');
Route::get('/manager/resume-manager/rejected', 'ManagerResumeController@resumesRejected');
Route::get('/manager/layout', 'ManagerLayoutController@main');
Route::get('/manager/layout-old', 'OLDManagerLayoutController@main');
Route::post('/manager/layout/data/{action}/{moduleID}/', array('before'=>'viewmodule.ownership', 'uses' => 'ManagerLayoutDataController@route'));
Route::get('/manager/setup', 'ManagerSetupController@setup');
Route::get('/admin', 'AdminHomeController@home');
Route::get('/login', 'UsersController@login');
Route::get('/test', 'TestController@testMail');
// Confide routes
Route::get('users/create', 'UsersController@create');
Route::post('users', 'UsersController@store');
Route::get('users/login', 'UsersController@login');
Route::post('users/login', 'UsersController@doLogin');
Route::get('users/confirm/{code}', 'UsersController@confirm');
Route::get('users/forgot_password', 'UsersController@forgotPassword');
Route::post('users/forgot_password', 'UsersController@doForgotPassword');
Route::get('users/reset_password/{token}', 'UsersController@resetPassword');
Route::post('users/reset_password', 'UsersController@doResetPassword');
Route::get('users/logout', 'UsersController@logout');

尝试添加

ini_set('display_errors', 1);

它至少应该告诉您实际错误是什么。这仅适用于开发模式,当您进入生产环境时将其删除

查看重定向之前是否有"返回"。例如:

// Unauthorized access
else {
    die('Filter error');
    //Redirect::to('/');
}

这里应该返回重定向::to('/');