在我的控制器函数中,我使用一条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.php
库Redirect
在全局名称空间中定义了一个类。因此,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] 删除。
我来说两句