我创建了app / Http / helpers.php
if (!function_exists('getLocation')) {
function getLocation($request)
{
return 'test';
}
我在composer.json autoload中添加了文件部分
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Http/helpers.php"
]
},
这是我的控制器:
namespace App\Http\Controllers;
use App\Jobs\ChangeLocale;
use App\Http\Requests;
use Illuminate\Http\Request;
use DB;
use Log;
class HomeController extends Controller
{
public function index(Request $request)
{
$data['location'] = getLocation($request);
}
}
当我在控制器中调用函数作为getLocation($ request)时;它说"调用未定义的函数App \ Http \ Controllers \ getLocation()"
这在我的本地工作正常,但在远程服务器上没有。我在远程服务器上缺少什么。尝试过作曲家安装和作曲家dump-autoload。
更新: 辅助文件未列在vendor / composer / autoload_files.php
中答案 0 :(得分:1)
在服务器上,您需要执行:
composer dumpautoload
因为在vendor/autoload.php
答案 1 :(得分:1)
试试这个,
在config / app.php文件中为此文件创建一个alieas
Ex:'示例' => App \ Helpers \ Example :: class,
Example.php中的代码如下,
<?php
namespace App\Helpers;
class Example
{
static function exampleMethod()
{
return "I am helper";
}
}
在Controller文件中使用上面的示例助手,如下所示,
<?php
namespace App\Http\Controllers;
use App\Helpers\Example;
class HomeController extends Controller
{
public function index(Request $request)
{
return Example::exampleMethod();
}
}
在刀片视图文件中使用上面的示例帮助程序,如下所示,
<div>{{ Example::exampleMethod()}}</div>
这将有助于您获得解决方案。
答案 2 :(得分:0)
确保Helper.php的结构正确...
<?php
//no namespace, no classes
//classes are not helpers
if ( !function_exists('nextStage') ) {
function nextStage($currentStage) {
//if you need to access a class, use complete namespace
return \App\Models\Stage::where('id',$currentStage)->first()->next_stage;
}
}