尝试访问自定义帮助程序中的别名会引发 'Not found' 消息。 Laravel 5.7
Trying to access alias inside a custom helper throws 'Not found' message. Laravel 5.7
对于我的应用程序,我创建了一个函数,该函数 returns 一个视图或一个已经呈现的视图 json。因为我需要经常使用这个函数,所以我制作了一个自定义助手,这样我就可以从每个控制器调用它。然而不幸的是,当我尝试在这个助手中使用另一个别名时,它似乎无法识别它。给我一条消息,说即使我可以从任何控制器访问和使用别名 'Request' 也找不到。
我已经在 de config/app.php 中添加了带有别名的帮助程序,以便更容易访问它。
这是我的代码:
控制器:
use AppHelper;
class MediaController extends Controller
{
public function index()
{
return AppHelper::returnView("backend.media.index", "navigation.media.media");
}
...
应用助手:
<?php
namespace App\Helpers;
use Request;
class AppHelper
{
public static function returnView($viewName, $menu, $data = []) {
$template = $viewName.'-template';
$view = $viewName;
if (Request::ajax()) {
if(isset($data->id)){
$navigation = view('backend.navigation.right-menu')->with('id', $data->id)->with('menuItems', $menu)->render();
} else {
...
在帮助程序中,我也尝试通过其实际路径调用 'Request',但无济于事。
我已经尝试查找一个小时左右的解决方案,但似乎无法在 google 或 Whosebug 上找到它。
感谢阅读。
亲切的问候,西蒙
我不认为
use Request;
足够具体,考虑到 Laravel 中不同 Request
类 的数量。您可能正在寻找:
use Illuminate\Http\Request;
如果您想在 AppHelper
或别名 Request
的某处定义 Request $request
,可通过以下方式获得:
use Illuminate\Support\Facades\Request;
应该允许使用 Request::ajax()
和类似的功能。
或者,您可以从 MediaController
函数 index()
传递 $request
对象,该对象已可从任何控制器方法获得,例如:
MediaController.php
use Illuminate\Http\Request;
public function index(Request $request){
return AppHelper::returnView($request, "backend.media.index", "navigation.media.media");
}
AppHelper.php
public static function returnView($request, $viewName, $menu, $data = []) {
...
if($request->ajax()){
...
}
}
编辑:ajax()
方法的一些注意事项:
use Illuminate\Support\Facades\Request;
...
if(Request::ajax()){ ... }
以上应该可以正常工作,或者,删除 use
语句并引用
if(\Request::ajax()){ ... }
传递 $request
时,请确保它是 Illuminate\Http\Request
的实例,并且 $request->ajax()
应该可以正常工作。
对于我的应用程序,我创建了一个函数,该函数 returns 一个视图或一个已经呈现的视图 json。因为我需要经常使用这个函数,所以我制作了一个自定义助手,这样我就可以从每个控制器调用它。然而不幸的是,当我尝试在这个助手中使用另一个别名时,它似乎无法识别它。给我一条消息,说即使我可以从任何控制器访问和使用别名 'Request' 也找不到。
我已经在 de config/app.php 中添加了带有别名的帮助程序,以便更容易访问它。
这是我的代码:
控制器:
use AppHelper;
class MediaController extends Controller
{
public function index()
{
return AppHelper::returnView("backend.media.index", "navigation.media.media");
}
...
应用助手:
<?php
namespace App\Helpers;
use Request;
class AppHelper
{
public static function returnView($viewName, $menu, $data = []) {
$template = $viewName.'-template';
$view = $viewName;
if (Request::ajax()) {
if(isset($data->id)){
$navigation = view('backend.navigation.right-menu')->with('id', $data->id)->with('menuItems', $menu)->render();
} else {
...
在帮助程序中,我也尝试通过其实际路径调用 'Request',但无济于事。
我已经尝试查找一个小时左右的解决方案,但似乎无法在 google 或 Whosebug 上找到它。
感谢阅读。
亲切的问候,西蒙
我不认为
use Request;
足够具体,考虑到 Laravel 中不同 Request
类 的数量。您可能正在寻找:
use Illuminate\Http\Request;
如果您想在 AppHelper
或别名 Request
的某处定义 Request $request
,可通过以下方式获得:
use Illuminate\Support\Facades\Request;
应该允许使用 Request::ajax()
和类似的功能。
或者,您可以从 MediaController
函数 index()
传递 $request
对象,该对象已可从任何控制器方法获得,例如:
MediaController.php
use Illuminate\Http\Request;
public function index(Request $request){
return AppHelper::returnView($request, "backend.media.index", "navigation.media.media");
}
AppHelper.php
public static function returnView($request, $viewName, $menu, $data = []) {
...
if($request->ajax()){
...
}
}
编辑:ajax()
方法的一些注意事项:
use Illuminate\Support\Facades\Request;
...
if(Request::ajax()){ ... }
以上应该可以正常工作,或者,删除 use
语句并引用
if(\Request::ajax()){ ... }
传递 $request
时,请确保它是 Illuminate\Http\Request
的实例,并且 $request->ajax()
应该可以正常工作。