如何从 laravel 刀片视图调用自定义类/方法?

How to call custom classes/methods from laravel blade view?

提问人:silvered.dragon 提问时间:7/26/2022 更新时间:7/26/2022 访问量:825

问:

我有一个视图,它根据连接到我的应用程序的客户端类型以不同的方式呈现一些日期。最初,日期来自一个巨大的 json,我的控制器以这种格式从 Web 服务/API 获取

YYYYMMDDHHMMSS
// 2022-03-15 18:30:00 is 20220315183000

我所做的是使用我在我的应用程序文件夹中编写的类/帮助程序来操作这些日期的外观

应用程序内容/ConvertTimestamp.php

<?php

/**
 * Helper timestamp
 */

namespace App;

class ConvertTimestamp {

    private $timestamp;

    // Style one date
    public static function styleOne($timestamp) {

        // Some manipulation here
        /* CODE */

        return $frontDate;

    }

    // Style two date
    public static function styleTwo($timestamp) {
        
        // Some manipulation here
        /* CODE */
        
        return $realDate;

    }

}

我现在要做的是在我的刀片文件中调用这个类,我尝试了不同的方法,第一种是简单地在刀片文件中打开php标签来使用相关的命名空间,就像这样

资源/视图/视图.刀片.php的内容

<?php use App\ConvertTimestamp ?>

<h2>The style one date is: </h2>
<h3>{{ ConvertTimestamp::styleOne($timestamp) }}</h3>

<h2>The style two date is: </h2>
<h3>{{ ConvertTimestamp::styleTwo($timestamp) }}</h2>

或者以这种方式直接在类名的路径前面(我目前正在使用这种方法)

资源/视图/视图.刀片.php的内容

<h2>The style one date is: </h2>
<h3>{{ \App\ConvertTimestamp::styleOne($timestamp) }}</h3>

<h2>The style two date is: </h2>
<h3>{{ \App\ConvertTimestamp::styleTwo($timestamp) }}</h2>

所以问题是,有一种更好的方法可以将类从控制器导入到该特定视图或所有视图,如下所示

控制器内容

public function index(){
    $data = 'some data';
    return view('home', $data)->useNamespace('App\ConvertTimestamp');
}
PHP Laravel 命名空间

评论


答:

2赞 Pooya Sabramooz 7/26/2022 #1

您可以将所有类放在 config Laravel 文件夹应用程序中.php别名

'aliases' => [
  "ConvertTimestamp" => App\ConvertTimestamp,
]

现在,您也可以在刀片和控制器上使用所有静态功能。

评论

0赞 silvered.dragon 7/26/2022
谢谢这有效,但是我怎样才能使类只能在该特定视图上访问?
0赞 Pooya Sabramooz 7/26/2022
我对此一无所知,但在您的情况下,您可以使用更改视图中的显示日期格式。Accessors & Mutators