Пользовательские классы Laravel добавить псевдоним

Поэтому я хочу добавить псевдоним для пользовательских классов, чтобы иметь возможность использовать их в blade-файле:

<?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, но это все еще не работает.

КСТАТИ: Является ли добавление пользовательских классов подобным образом жизнеспособным способом реализации логики, специфичной для сайта, такой как получение и обработка данных из базы данных, или есть лучший подход?

Редактировать 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и это все еще работает! Почему-то мои изменения не применяются. У кого-нибудь есть решение для этого?

2

Решение

Проблема была не в коде вообще:
После осознания того, что изменения в config/app.php не применяется, простой

php artisan config:clear

исправлены буквально все проблемы, которые я представил в своем вопросе.

4

Другие решения

Добавьте в свой файл композитора:

"autoload": {
//...
"files" : ["app/classes/Requirement.php"]
},

Затем добавьте к своему псевдониму, как вы написали в своем config / app.php

Тогда вы сможете использовать в своих шаблонах:

{{ Requirement::test() }}
1

Попробуйте это, если это работает:

В вашем контроллере:

 $whateveryour_variable = Requirement::Test();
return view('yourview',compact('whateveryour_variable'));

По вашему мнению:

   {{$whateveryour_variable}}

Вы можете получить данные в вашей базе данных, затем сохранить их в переменной, а затем передать их на ваш взгляд.

0

Ты пробовал с косой чертой?

{{ \Requirement::Test() }}

РЕДАКТИРОВАТЬ: грамматика

0

То, что вы ищете, это Фасады.

Вы создаете класс Façade, который содержит ссылку на привязку вашего класса в контейнере службы, и это то, что вы используете в aliases массив в вашем конфиг / app.php файл.

Документация: http://laravel.com/docs/5.1/facades

0

Так как вы упомянули, что вам нужен класс в Blade:

Вместо установки псевдонима, вы можете использовать лезвие @inject функция в верхней части вашего блейд-файла.

@inject('your_class','App\Helpers\SomeNamespace\Yourclass')

Тогда в шаблоне лезвия:

{{$your_class->doSomething()}}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector