将操作重定向到不同命名空间中的控制器

时间:2016-01-05 13:18:54

标签: php laravel-5 laravel-5.2

我有中间件使用重定向来调用控制器,然后控制器显示视图。

public function handle($request, Closure $next)
{
    redirect()->action('Full\Namespace\To\Controller\ErrorController@fourOhThree'); 
}

我也有这条路线。当我按照路线时,视图显示正常。当我尝试使用action重定向并传递我的控制器的命名空间时,laravel尝试在基本应用程序中查找控制器。我收到错误

Action App\Http\Controllers\Full\Namespace\To\Controller\ErrorController@fourOhThree not defined.

当控制器位于

App\Vendor\Myname\Mypackagename\Controllers\ErrorController@fourOhThree

我已经正确命名了我的控制器,因为它与此目录中的其他命名空间控制器相匹配。这是我试图通过动作调用的唯一控制器。

ErrorController.php

中的

App\Vendor\Myname\Mypackagename\Controllers

namespace Full\Namespace\To\Controller;

use App\Http\Controllers\Controller;

class ErrorController extends Controller
{
    public function fourOhThree()
    {
        return view('...');
    }
}

我认为我在将命名空间控制器传递给action方法方面做错了。

1 个答案:

答案 0 :(得分:5)

尝试在限定名称前添加“\”。

action('\Full\Namespace\To\Controller\ErrorController@fourOhThree')