重定向不适用于 Laravel 4

Redirect is not working on Laravel 4

在我的控制器函数中,我使用 require 语句来包含一个文件:

require app_path().'/plivo/plivo.php';

在此语句之后,我尝试使用以下语句从此控制器重定向:

return Redirect::back()->with('success', 'Note added successfully');

但是,这给了我以下错误:

Call to undefined method Redirect::back()

如何从此功能重定向?

这是我的完整代码:

public function sendSMS(){
    require app_path().'/plivo/plivo.php';
    $auth_id = "XXXXXXXXXXXX";
    $auth_token = "XXXXXXXXXXXXXXXXXXXXX";
    $p = new \RestAPI($auth_id, $auth_token);

    $params = array(
        'src' => '1XX7XX0',
        'dst' => '91XXXXXXXXX7',
        'text' => 'Test SMS',
        'method' => 'POST'
    );
    $response = $p->send_message($params);
    return Redirect::back()->with('success', 'Note added successfully');
}

此答案假定 plivo.php 来自 this git repo

问题是 plivo.php 库在全局命名空间中定义了 Redirect class。因此,Laravel 没有注册全局 Redirect 别名以指向 Illuminate\Support\Facades\Redirect facade。

因此,在最后一行 return Redirect::back()->with(...); 中,使用的 Redirect class 是 plivo.php 库中定义的 class,而不是 Laravel的Illuminate\Support\Facades\Redirectclass.

最快的解决方法是将您的线路更改为:

return Illuminate\Support\Facades\Redirect::back()->with('success', 'Note added successfully');

另一种选择是将 Laravel 的重定向器注入到您的控制器中,并使用它而不是使用外观:

class MyController extends BaseController {

    public function __construct(\Illuminate\Routing\Redirector $redirector) {
        $this->redirector = $redirector;
    }

    public function sendSMS() {
        require app_path().'/plivo/plivo.php';
        //
        return $this->redirector->back()->with('success', 'Note added successfully');
    }
}

第三种选择是更新您的代码以使用具有命名空间的 plivo composer 包。更新已在存储库的 dev 分支中完成,您可以在 here 中找到该分支。如果这样做,您将摆脱 require 语句并使用命名空间 plivo classes.