我有一些自定义功能,我正在尝试将其用于项目,例如:
function makeText($str1, $str2){
return $str1 . ' '. $str2;
}
我希望在视图中使用此功能,例如:
<div style='float:left;'>MakeText : {{makeText("Hello","World");}}</div>
makeText
只是示例函数,巫文件夹必须放置函数方法,例如UF.php
包含所有函数以及如何将此文件定义为laravel并使用它?
答案 0 :(得分:1)
Laravel为您提供了一些选择。您可以将函数定义包含在自动包含的任何文件中,并获得所需的结果,例如/app/start/global.php
,/bootstrap/start.php
,/app/routes.php
或其他许多文件。这种方法的问题在于,根据您的函数名称,名称可能与已经采用的名称(或稍后可能会被采用)发生冲突的可能性不可忽略。此外,如果您需要调试此功能,您需要以后能够找到它。
您可以通过将函数放在类中,然后将该类称为服务来解决此问题。然后,您可以通过依赖注入将该类注入控制器,然后将该数据传递给您的视图:
class MyService
{
public function makeText($param1, $param2)
{
return $param1 . ' ' . $param2;
}
}
class AController extends BaseController
{
public function __construct(MyService $serv)
{
$this->serv = $serv;
}
public function aRoute()
{
return View::make('some.view')
->with('serv', $this->serv);
}
}
然后在你看来:
<div style='float:left;'>MakeText : {{ $serv->makeText("Hello","World"); }}</div>
这将有助于您防止命名冲突,因为您可以轻松地将MyService
放入任何有意义的命名空间中。它还可以帮助您更好地整理代码。
这个简单的东西可能不需要service provider,但是当你为项目增加复杂性时,一旦你需要,这将是一个简单的步骤。
答案 1 :(得分:1)
您可以遵循Laravel的惯例,并在 app 目录中创建 helpers.php 文件。请确保使用Composer自动加载它:
"autoload": {
"classmap": [
//
],
"files": [
"app/helpers.php"
]
},
然后,您可以在应用程序的任何位置使用该功能,包括视图。