重定向不适用于Laravel 4

Vinod VT

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

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

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

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

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

调用未定义的方法 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是从此git repo中获取的

问题是该plivo.phpRedirect在全局名称空间中定义了一个类。因此,Laravel不会注册全局Redirect别名以指向Illuminate\Support\Facades\Redirect外观。

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

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

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

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

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分支中完成,您可以在此处找到如果这样做,您将摆脱require语句,而使用命名空间的plivo类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章