我有两个控制器文件家庭控制器和后端控制器。创建全局函数并从两个文件访问它的最佳方法是什么?
我发现阿里安·阿科斯塔的回答很有帮助,但我想知道是否有最简单的方法。如有任何建议,我将不胜感激。
更新:
步骤1在应用文件夹应用中添加文件夹-
步骤2:在Helper文件夹中添加php类,例如Helper。php
将命名空间和类添加到帮助器。php
namespace App\Helper;
class Helper
{
}
注册这个助手。php转换为config/app。php文件
'aliases' => [
....
'Helper' => App\Helper\Helper::class
]
现在,在Helper中编写所有函数。php和它将在任何地方都可以访问。
如何从控制器访问?
步骤1-在控制器顶部添加命名空间。
use App\Helper\Helper;
步骤2-调用函数-假设Helper类中有一个getInformation()。
$information = Helper::getInformation()
>
在应用程序
目录中创建一个新的助手
文件夹。
创建一个名为your\u helper\u函数的
在该php
文件。php帮助程序
文件夹中。
在您的\u helper\u函数中添加您的函数。php
function your_function($parameters){
//function logic
}
function your_another_function($parameters){
//function logic
}
将此文件添加到您的composer.json的Files
键中
"autoload": {
...
"files": [
"app/Helpers/your_helper_function.php"
]
...
}
然后最后重新生成composer自动加载文件。(在项目目录中运行此操作)
composer dump-autoload
就这样了!现在,您可以在Laravel项目的任何部分访问your_function()
或your_another_function()
。
如果您仍然有任何困惑,请查看我的博客文章,了解如何做到这一点:
如何添加一个全局函数在Laravel使用作曲家?
一种方法是创建一个类并使用它的实例,这样您不仅可以访问控制器、刀片服务器或任何其他类中的类对象。
在应用文件夹中创建名为Helpers的文件夹,并在其中创建文件名AppHelper或您选择的任何文件名
<?php
namespace App\Helpers;
class AppHelper
{
public function bladeHelper($someValue)
{
return "increment $someValue";
}
public function startQueryLog()
{
\DB::enableQueryLog();
}
public function showQueries()
{
dd(\DB::getQueryLog());
}
public static function instance()
{
return new AppHelper();
}
}
在控制器中,您可以调用各种函数
public function index()
{
//some code
//need to debug query
\App\Helpers\AppHelper::instance()->startQueryLog();
//some code that executes queries
\App\Helpers\AppHelper::instance()->showQueries();
}
假设您在一个刀片文件中,下面是如何调用应用程序刀片助手功能
some html code
{{ \App\Helpers\AppHelper::instance()->bladeHelper($value) }}
and then some html code
您还可以通过在config\app.php中为AppHelper类创建别名来减少调用完整函数命名空间\App\Helper的开销
'aliases' => [
....
'AppHelper' => App\Helpers\AppHelper::class
]
在控制器或刀片文件中,您可以直接调用
\AppHelper::instance()->functioName();
问题内容: 假设我们提供以下服务: 然后,从控制器,我会说: 问题分为两部分: 全局可访问性 :如果我有100个控制器,并且所有人都需要访问该服务,则我不想显式注入它100次。 如何使服务在全球范围内可用? 目前,我唯一能想到的就是从根范围内包装它,这违背了目的。 视图的 可访问性:如何 从视图 内访问服务? 这篇文章建议从控制器内部包装服务。如果要花这么长的时间,似乎我应该只在根范围上实现功能?
我在建一个拉威尔的网站。我希望提交的表单数据运行查询,并将结果插入表格式。我正在使用oracle DB,并已将其连接到Laravel。另外,我已经创建了表单,查询结果正确。我不能做的是将结果成功地传递到表中。 我的文件如下: > Routes.php(或web.php较新的laravel版本): 搜索。刀身php(带有post方法的表单) 我的控制器(NewController.php)运行查询。
问题内容: 我正在尝试通过常规函数访问全局变量,这可能吗? 我已经使用$ rootScope设置了一些变量,并且我试图通过回调函数来访问它。从控制器调用此回调。我不想传递该回调。 有什么办法可以访问吗? 我愿意使用服务。 请提出建议。 谢谢 我试图按以下方式访问rootScope: 我的服务是: 它在updateStatus fn下显示isFBLoggedin为true,但未反映在视图上 我正在打
如果可能的话,我愿意使用服务。 请建议。 谢谢 我还使用来呈现视图
问题内容: 我将所有AngularJS控制器都放在一个文件controllers.js中。该文件的结构如下: 我想做的是将Ctrl1和Ctrl2放入单独的文件中。然后,我会将这两个文件都包含在index.html中,但是应该如何构造呢?我尝试做这样的事情,它在网络浏览器控制台中引发错误,提示找不到控制器。有什么提示吗? 问题答案: 文件一: 文件二: 文件三: 按该顺序包括。我推荐3个文件,因此模
我的所有AngularJS控制器都在一个文件controllers.js中。该文件的结构如下: 我想做的是将Ctrl1和Ctrl2放入单独的文件中。然后,我会在index.html中包含这两个文件,但该如何结构化呢?我试着做这样的事情,它在web浏览器控制台中抛出一个错误,说它找不到我的控制器。有什么提示吗? 我搜索了StackOverflow并发现了这个类似的问题--然而,这个语法在Angula