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')我真的认为你也应该这样做