Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重定向在Laravel 4上不起作用_Php_Laravel_Redirect_Laravel 4_Require - Fatal编程技术网

Php 重定向在Laravel 4上不起作用

Php 重定向在Laravel 4上不起作用,php,laravel,redirect,laravel-4,require,Php,Laravel,Redirect,Laravel 4,Require,在控制器功能中,我使用require语句包含一个文件: require app_path().'/plivo/plivo.php'; 在此语句之后,我尝试使用以下语句从此控制器重定向: return Redirect::back()->with('success', 'Note added successfully'); 但是,这给了我以下错误: 调用未定义的方法Redirect::back() 如何从该函数重定向 这是我的完整代码: public function sendSMS()

在控制器功能中,我使用
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
来自

问题是
plivo.php
库在全局命名空间中定义了一个
重定向
类。因此,Laravel没有注册全局
重定向
别名以指向
照明\支持\立面\重定向
立面

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

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

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类。

此答案假设
plivo.php
来自

问题是
plivo.php
库在全局命名空间中定义了一个
重定向
类。因此,Laravel没有注册全局
重定向
别名以指向
照明\支持\立面\重定向
立面

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

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

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类。

您的代码是否带名称空间?试试
return\Redirect::back()…
?@shift-exchange我也试过了。不工作hi@Vinod VT如果您将plivo及其方法移动到一个包中,您的控制器将看起来更干净。我可以看到这是一个短信网关。我为我使用的SMS网关创建了一个包,它使我能够执行类似以下操作:
SMS::send('08000000','message')我真的认为你应该做同样的事情你的代码有名称空间吗?试试
return\Redirect::back()…
?@shift-exchange我也试过了。不工作hi@Vinod VT如果您将plivo及其方法移动到一个包中,您的控制器将看起来更干净。我可以看到这是一个短信网关。我为我使用的SMS网关创建了一个包,它使我能够执行类似以下操作:
SMS::send('08000000','message')