所以我想为自定义类添加一个别名,以便能够在刀片中使用它们:
<?php
namespace App\Classes;
class Requirement
{
public static function Test()
{
return "hello";
}
}
在config/app.php
中,我添加了一个别名:
...
'Requirement' => App\Classes\Requirement::class
然后,我希望能够在像
这样的刀片模板中调用它{{ Requirement::Test() }}
但是别名不管怎么样。我也试过了composer dump-autoload
,但它还没有用。
BTW:添加这样的自定义类是实现特定于站点的逻辑的可行方法,例如从数据库中检索和处理数据,还是有更好的方法?
修改1
我在Requirement.php
中创建了app/Facades
,其中包含以下内容
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Requirement extends Facade{
protected static function getFacadeAccessor() { return 'Requirement'; }
}
在PageContentProvider.php
中添加了app/Providers
以及以下内容
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class PageContentProvider extends ServiceProvider
{
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->bind('Requirement', function($app){
return new \App\Classes\Requirement();
});
}
}
和config/app.php
别名
'Requirement'=>App\Facades\Requirement::class
以及提供者
App\Providers\PageContentProvider::class
但它仍无法正常工作。
修改2
添加类似
的内容exit();
或
echo "blabla";
在register()
内,没有任何变化。这是否表明PageContentProvider
甚至没有加载?
编辑3
自标准AppServiceProvider
加载后,我在AppServiceProvider
... 中删除了config/app.php
的相应条目,但它仍然有用!我的更改不知何故#39; t得到应用。有人有解决方案吗?
答案 0 :(得分:5)
问题根本没有代码:
在意识到config/app.php
的变化没有得到应用之后,一个简单的
php artisan config:clear
修正了我在问题中提出的每一个问题。
答案 1 :(得分:1)
添加到您的作曲家文件:
"autoload": {
//...
"files" : ["app/classes/Requirement.php"]
},
然后在config / app.php
中添加您的别名然后您就可以在模板中使用了:
{{ Requirement::test() }}
答案 2 :(得分:0)
如果有效,请尝试此操作:
在您的控制器中:
$whateveryour_variable = Requirement::Test();
return view('yourview',compact('whateveryour_variable'));
在您的视图中:
{{$whateveryour_variable}}
您可以获取数据库中的数据,然后将其存储在变量中,然后在视图中传递它。
答案 3 :(得分:0)
你试过斜线吗?
{{ \Requirement::Test() }}
编辑:语法
答案 4 :(得分:0)
答案 5 :(得分:0)
既然你提到你需要Blade中的一个类:
您可以使用刀片文件顶部的刀片@inject
功能代替设置别名。
@inject('your_class','App\Helpers\SomeNamespace\Yourclass')
然后在刀片模板中:
{{$your_class->doSomething()}}