【问题标题】:Laravel call helperLaravel 调用助手
【发布时间】:2018-07-31 19:42:33
【问题描述】:

我在 Laravel 中调用助手时遇到了一些问题。 我有刀片,里面有这段代码

@foreach ($sel->get_offers() as $o)
<option value="{{$o->get_date_range()->get_range()}}" {{($o->get_offer_key() == $u_key)? 'selected': ''}}>
@php
$select = $o->get_date_range()->get_start('j M D');
$change = str_replace(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], [uctrans('labels.Monday'), uctrans('labels.Tuesday'), uctrans('labels.Wednesday'), uctrans('labels.Thursday'), uctrans('labels.Friday'), uctrans('labels.Saturday'), uctrans('labels.Sunday'), uctrans('labels.Jan'), uctrans('labels.Feb'), uctrans('labels.Mar'), uctrans('labels.Apr'), uctrans('labels.May'), uctrans('labels.Jun'), uctrans('labels.Jul'), uctrans('labels.Aug'), uctrans('labels.Sep'), uctrans('labels.Oct'), uctrans('labels.Nov'), uctrans('labels.Dec')], $select);  @endphp
{{$change}}
</option>                    
@endforeach

所以现在,我需要变量 $change 从刀片中删除并导入到助手(但仍然调用刀片),就像这样

function translate_selects()
{
    $change = str_replace(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], [uctrans('labels.Monday'), uctrans('labels.Tuesday'), uctrans('labels.Wednesday'), uctrans('labels.Thursday'), uctrans('labels.Friday'), uctrans('labels.Saturday'), uctrans('labels.Sunday'), uctrans('labels.Jan'), uctrans('labels.Feb'), uctrans('labels.Mar'), uctrans('labels.Apr'), uctrans('labels.May'), uctrans('labels.Jun'), uctrans('labels.Jul'), uctrans('labels.Aug'), uctrans('labels.Sep'), uctrans('labels.Oct'), uctrans('labels.Nov'), uctrans('labels.Dec')], $select);
    return $change;
}

如何在刀片/控制器中调用此助手?我没有对 config/app.php 进行任何更改。

【问题讨论】:

标签: php laravel


【解决方案1】:

您可以创建文件并将其命名为 helper.php。

这个文件没有类或接口,它只是函数。

然后在 composer.json 文件中将 helper.php 路径放入 files 键中。

这样。

"autoload": {
    "files": [
        "app/helper.php" // full path here for your file
    ],
}

helper.php 文件会是这样的。

<?php

function translate_selects()
{

$change = str_replace(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], [uctrans('labels.Monday'), uctrans('labels.Tuesday'), uctrans('labels.Wednesday'), uctrans('labels.Thursday'), uctrans('labels.Friday'), uctrans('labels.Saturday'), uctrans('labels.Sunday'), uctrans('labels.Jan'), uctrans('labels.Feb'), uctrans('labels.Mar'), uctrans('labels.Apr'), uctrans('labels.May'), uctrans('labels.Jun'), uctrans('labels.Jul'), uctrans('labels.Aug'), uctrans('labels.Sep'), uctrans('labels.Oct'), uctrans('labels.Nov'), uctrans('labels.Dec')], $select);
return $change;
}

很高兴告诉我你的情况如何。

【讨论】:

  • helper.php 文件会这样。
【解决方案2】:

为 Helper 添加新的提供

artisan make:provider HelperServiceProvider

移至app/Providers/HelperServiceProvider.php

通过注册方法调用所有的HelperFile

public function register()
{
    foreach (glob(app_path().'/Helpers/*.php') as $filename){
        require_once($filename);
    }
}

在providersconfig/app.php 中添加条目

'providers' => [
    'App\Providers\HelperServiceProvider',
]

现在您可以在任何地方调用自定义辅助函数。

【讨论】:

    猜你喜欢
    • 2019-11-17
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2016-09-02
    • 2011-06-29
    相关资源
    最近更新 更多