在我的控制器功能中,我使用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');
}
答案 0 :(得分:5)
此答案假设plivo.php
来自this git repo。
问题是plivo.php
库在全局命名空间中定义了Redirect
类。因此,Laravel不会注册全局Redirect
别名以指向Illuminate\Support\Facades\Redirect
外观。
因此,在最后一行return Redirect::back()->with(...);
中,使用的Redirect
类是plivo.php
库中定义的类,而不是Laravel的Illuminate\Support\Facades\Redirect
类。
最快的解决方法是将您的行更改为:
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类。