我想创建帮助函数,以避免在Laravel视图之间重复代码。例如:
view.blade.php
<p>Foo Formated text: {{ fooFormatText($text) }}</p>
它们基本上是文本格式化函数。我应该如何定义全局可用的帮助函数,如fooFormatText()?
我想创建帮助函数,以避免在Laravel视图之间重复代码。例如:
view.blade.php
<p>Foo Formated text: {{ fooFormatText($text) }}</p>
它们基本上是文本格式化函数。我应该如何定义全局可用的帮助函数,如fooFormatText()?
当前回答
在app/Helper/Helpers.php中创建Helpers.php
namespace App\Helper
class Helpers
{
}
添加作曲家和作曲家更新
"autoload": {
"classmap": [
"database/seeds",
"database/factories",
"database","app/Helper/Helpers.php"
],
"psr-4": {
"App\\": "app/"
},
"files": ["app/Helper/Helpers.php"]
},
在控制器中使用
use App\Helper\Helpers
视图中使用 修改config->app.php文件
'aliases' => [
...
'Helpers' => 'App\Helper\Helpers'
],
视图中调用
<?php echo Helpers::function_name(); ?>
其他回答
这是JeffreyWay在Laracasts讨论中提出的建议。
在你的app/Http目录中,创建一个helpers.php文件并添加你的函数。 在作曲家。在自动加载块中添加"files": ["app/Http/helpers.php"]。 运行composer dump-autoload。
我使用的另一种方法是: 1)在应用程序\FolderName\fileName.php中创建一个文件,并在其中包含以下代码
<?php
namespace App\library
{
class hrapplication{
public static function libData(){
return "Data";
}
}
}
?>
2)之后在我们的刀片
$FmyFunctions = new \App\FolderName\classsName;
echo $is_ok = ($FmyFunctions->libData());
就是这样。这是可行的
我知道现在回答这个问题已经很晚了,但是,这个问题每天都发生在所有初级开发人员身上,所以对于直接步骤,请执行以下步骤:
**将你的helper函数分组到类中(使用刀片中的函数只是使它们静态),并将所有类放在配置Laravel文件夹app.php别名
'aliases' => [
"YourClassName" => App\Support\YourClassName,
]
现在你可以在刀片和控制器上使用所有的静态函数了。
首先在App\Http目录中创建helpers.php。 然后在composer.json中添加以下代码
"autoload": {
"classmap": [
"database"
],
"files": [
"app/Http/helpers.php"
],
"psr-4": {
"App\\": "app/"
}
},
执行如下命令
composer dump-autoload
现在可以在helpers.php文件中定义自定义函数。
创建自定义助手目录: 首先在app目录中创建Helpers目录。 创建hlper类定义: 现在让我们创建一个简单的辅助函数,它将连接两个字符串。在/app/Helpers/MyFuncs.php中创建一个新文件MyFuncs.php
<?php
namespace App\Helpers;
class MyFuncs {
public static function full_name($first_name,$last_name) {
return $first_name . ', '. $last_name;
}
}
名称空间的应用程序\助手;在App namespace下定义了Helpers命名空间。 类MyFuncs{…}定义了帮助类MyFuncs。 公共静态函数full_name($first_name,$last_name){…}定义了一个静态函数,它接受两个字符串形参并返回一个连接的字符串
帮工服务提供类
服务提供者用于自动加载类。我们需要定义一个服务提供者,它将加载/app/Helpers目录下的所有helper类。
执行以下artisan命令:
php工匠使:提供者HelperServiceProvider
该文件将创建在/app/Providers/HelperServiceProvider.php中
Open /app/Providers/HelperServiceProvider.php
添加如下代码:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class HelperServiceProvider extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
foreach (glob(app_path().'/Helpers/*.php') as $filename){
require_once($filename);
}
}
}
在这里,
namespace App\Providers; defines the namespace provider
use Illuminate\Support\ServiceProvider; imports the ServiceProvider class namespace
class HelperServiceProvider extends ServiceProvider {…} defines a class HelperServiceProvider that extends the ServiceProvider class
public function boot(){…} bootstraps the application service
public function register(){…} is the function that loads the helpers
foreach (glob(app_path().'/Helpers/*.php') as $filename){…} loops through all the files in /app/Helpers directory and loads them.
现在我们需要注册HelperServiceProvider并为我们的助手创建一个别名。
打开/config/app.php文件
找到providers数组变量
添加以下行
App\Providers\HelperServiceProvider::class,
定位aliases数组变量
添加以下行
'MyFuncs' => App\Helpers\MyFuncs::class,
保存更改 使用我们的自定义助手
我们将创建一个调用自定义帮助函数Open /app/routes.php的路由
添加以下路由定义
Route::get('/func', function () {
return MyFuncs::full_name("John","Doe");
});
在这里,
return MyFuncs::full_name("John","Doe"); calls the static function full_name in MyFuncs class