Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Мне кажется такой подход не совсем гибкий, тем более что хочу использовать в связке Title и H1, где H1 может содержать HTML тэги, а для Title их нужно вычищать.
Покопавшись в SeoTools на гитхабе пришел к следующей конструкции через сервис провайдера:
PageToolsServiceProvider:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Http\MyLibs\PageTools\Contracts;
use App\Http\MyLibs\PageTools;
class PageToolsServiceProvider extends ServiceProvider{
protected $defer = true;
public function boot(){
}
public function register(){
$this->app->singleton('pagetools', function () {
return new PageTools();
});
$this->app->bind(Contracts\PageTools::class, 'pagetools');
}
public function provides(){
return [
Contracts\PageTools,
'pagetools'
];
}
}
Интерфейс:
<?php
namespace App\Http\MyLibs\PageTools\Contracts;
interface PageTools{
public function setTitle($title);
public function getTitle();
}
Сам класс:
<?php
namespace App\Http\MyLibs\PageTools;
use App\Http\MyLibs\PageTools\Contracts\PageTools as PageToolsContract;
class PageTools implements PageToolsContract{
public $title;
public function __construct(){
}
public function setTitle($title){
$this->title = $title;
}
public function getTitle(){
return $this->title;
}
}
Фасад
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class PageToolsFacade extends Facade{protected static function getFacadeAccessor(){return 'pagetools';}}
Конфиг App
App\Providers\PageToolsServiceProvider::class,
'PageTools' => App\Facades\PageToolsFacade::class,
В итоге я хочу получить возможность в любом месте дергать методы, которые отвечают за отображение страницы. От сео примочек, до подключаемых JS\CSS бибилиотек которые я использую во view, непосредственно в шаблоне.
Ну и есть пара вопросов.
1. В правильном ли я направлении действую?
2. Как только начал в провайдере использовать связывание, вывалилась ошибка. Которую не могу победить:
FatalErrorException in Facade.php line 217: Call to undefined method App\Facades\PageToolsFacade::setTitles()
Подскажите что я делаю не так?
Заранее спасибо за помощь.
Здравствуйте.
Изучаю ларавел и не понятно как реализовать правильно следующее:
Есть класс который отвечает скажем за заголовок h1 и тэг title.
Я хочу его вызывать из любого контроллера или блэйд шаблона. Что то типа Titles->set("Привет!"); Внутри данного метода я обрабатываю данные и уже в основном шаблоне делаю Titles->getTitle() ; Titles->getH1();
Подскажите в какую сторону копать что бы правильно реализовать такой функционал. Заплутал я совсем в провайдерах, сервис контроллерах, фасадах и тд...
Заранее спасибо за помощь!
Страницы 1