【问题标题】:Redirect action to controller in different namespace将动作重定向到不同命名空间中的控制器
【发布时间】:2016-01-05 13:18:54
【问题描述】:

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

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.phpApp\Vendor\Myname\Mypackagename\Controllers

namespace Full\Namespace\To\Controller;

use App\Http\Controllers\Controller;

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

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

【问题讨论】:

    标签: php laravel-5 laravel-5.2


    【解决方案1】:

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

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

    【讨论】:

    • 试过这个。错误消失了,但控制器没有触发。
    • 我不知道你所说的“控制器不触发”是什么意思
    • 在重定向中似乎没有做任何事情。 ErrorController 中的任何代码都不会触发。 ...我猜它现在是一个不同的问题?
    • 除了反斜杠,我还需要返回重定向;不只是开火。谢谢。
    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多