如何在 Laravel 5 的视图中使用我的自定义 class
How can I use my custom class in a view on Laravel 5
我有一个必须在我的视图中使用的自定义 class。但是我该怎么做呢?
在Laravel 4.2中,我直接运行composer.phar dump-autoload
然后在start/local.php
中添加如下:
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/helpers/MyClass',
));
最后,在我看来,我只是使用我的 class: MyClass::myMethod()
。同样,我如何使用 Laravel 5?
谢谢
您有两个选择,Service
或 Service Provider
。
服务
这个 class 可以作为一个助手,它的所有方法都是静态的。例如,在 app/Services 文件夹中,您可以新建一个:
<?php
namespace Myapp\Services;
class DateHelper{
public static function niceFormat(){
return "This is a nice format";
}
}
然后,在 config/app.php
处为此 class 添加一个别名,如下所示:
'DateHelper' => 'Myapp\Services\DateHelper'
现在,在您的应用程序中,您可以调用 niceFormat()
方法,例如 \DateFormat::niceFormat();
服务提供商
我刚刚发现您可以通过简单的注入将任何 class 实例添加到视图中。
https://laravel.com/docs/5.6/blade#service-injection
只需创建一个 class 如:
app/Containers/Helper.php
namespace App\Containers;
class Helper {
function foo() {
return 'bar';
}
}
在blade中查看文件:
@inject('helper', 'App\Containers\Helper')
<div>
What's Foo: {{ $helper->foo() }}
</div>
就是这样!是不是很酷!
我有一个必须在我的视图中使用的自定义 class。但是我该怎么做呢?
在Laravel 4.2中,我直接运行composer.phar dump-autoload
然后在start/local.php
中添加如下:
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/helpers/MyClass',
));
最后,在我看来,我只是使用我的 class: MyClass::myMethod()
。同样,我如何使用 Laravel 5?
谢谢
您有两个选择,Service
或 Service Provider
。
服务
这个 class 可以作为一个助手,它的所有方法都是静态的。例如,在 app/Services 文件夹中,您可以新建一个:
<?php
namespace Myapp\Services;
class DateHelper{
public static function niceFormat(){
return "This is a nice format";
}
}
然后,在 config/app.php
处为此 class 添加一个别名,如下所示:
'DateHelper' => 'Myapp\Services\DateHelper'
现在,在您的应用程序中,您可以调用 niceFormat()
方法,例如 \DateFormat::niceFormat();
服务提供商
我刚刚发现您可以通过简单的注入将任何 class 实例添加到视图中。
https://laravel.com/docs/5.6/blade#service-injection
只需创建一个 class 如:
app/Containers/Helper.php
namespace App\Containers;
class Helper {
function foo() {
return 'bar';
}
}
在blade中查看文件:
@inject('helper', 'App\Containers\Helper')
<div>
What's Foo: {{ $helper->foo() }}
</div>
就是这样!是不是很酷!