我有一个自定义类,我必须在我的视图中使用。但我是怎么做到的?
在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',
));
最后,在我的观点中,我只使用我的课程:MyClass::myMethod()
。再次,我如何使用Laravel 5进行此操作?
由于
答案 0 :(得分:18)
您有两种选择,即Service
或Service Provider
。
这个类可以作为一个包含所有方法静态的帮助器。例如,在app / Services文件夹中,您可以创建一个新文件夹:
<?php
namespace Myapp\Services;
class DateHelper{
public static function niceFormat(){
return "This is a nice format";
}
}
然后,在config/app.php
添加一个别名,如下所示:
'DateHelper' => 'Myapp\Services\DateHelper'
现在,在您的应用中,您可以像niceFormat()
\DateFormat::niceFormat();
方法
答案 1 :(得分:1)
我刚刚发现您可以通过简单的注入将任何类实例添加到视图中。
https://laravel.com/docs/5.6/blade#service-injection
只需创建一个像这样的类:
app / Containers / Helper.php
namespace App\Containers;
class Helper {
function foo() {
return 'bar';
}
}
在刀片视图文件中:
@inject('helper', 'App\Containers\Helper')
<div>
What's Foo: {{ $helper->foo() }}
</div>
就这样!那不是很酷!