2016-01-17 6 views
1

Я пытаюсь структурировать свое приложение и иметь проблемы с классом загрузки.Basic Laravel/Вопросы программирования

Итак, мой первый вопрос: ServiceProviders - это просто привязать интерфейсы, верно?

Как я могу сделать, что мой класс загружается при загрузке приложения.

Чтобы быть более конкретным, я стараюсь включать SHORTCODE логику PingPong неба: http://sky.pingpong-labs.com/docs/2.0/shortcode

Что я сделал сейчас, чтобы сделать папку Шорткоды и поставить там:

<?php namespace Modules\Account\Shortcodes; 

use Shortcode; 

class AccountsShortcode 
{ 
    public function register($attr, $content = null, $name = null) 
    { 
     $text = Shortcode::compile($content); 
     return '<div'.HTML::attributes($attr).'>'. $text .'</div>'; 
    } 
} 


Shortcode::register('accounts', 'AccountsShortcode'); 

I попробовал также добавить папку в автозагрузку PSR-4, но она не работает.

I alreay есть промежуточное программное обеспечение:

<?php namespace Modules\Page\Http\Middleware; 

use Closure; 
use Shortcode; 

class PageMiddleware 
{ 
    /** 
    * Run the request filter. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $response = $next($request); 
     $response->setContent(Shortcode::compile($response->original)); 
     return $response; 
    } 
} 

и эта часть работы.

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

ответ

1

На основе пространства имен, которое вы указали, я предполагаю, что вы используете пакет Pingpong Modules. Если это так, после беглого взгляда на их документацию, я считаю, что это то, что вам нужно сделать:

Сначала создайте свой короткий класс кода. На основании информации, предоставленной Вами, вам нужно создать этот класс в modules/Account/Shortcodes/AccountsShortcode.php:

<?php 

namespace Modules\Account\Shortcodes; 

use Shortcode; 

class AccountsShortcode 
{ 
    public function register($attr, $content = null, $name = null) 
    { 
     $text = Shortcode::compile($content); 
     return '<div'.HTML::attributes($attr).'>'. $text .'</div>'; 
    } 
} 

Далее используйте поставщик услуг вашего модуля, чтобы зарегистрировать свой шорткод к классу SHORTCODE. В modules/Account/Providers/AccountServiceProvider.php, обновите метод register() зарегистрировать свой шорткод:

public function register() 
{ 
    // you can add "use" statements at the top if you'd like to clean this up 
    \Shortcode::register('accounts', \Modules\Account\Shortcodes\AccountsShortcode::class); 
} 

Наконец, запустите composer dump-autoload, чтобы убедиться, что автозагрузчик знает о своем новом каталоге и классов.

+0

Полностью правы, я также и пакет модулей;) спасибо большое. класс :: класс был тем, чего я не видел :) – mastercheef85

+0

Просто любопытство: Итак, вы также поместили Shortcodes внутри модулей \ Modulename \ Shortcode folder? так что это хороший способ структурирования? – mastercheef85

+0

@ mastercheef85 Ну, я никогда не использовал ни один из этих пакетов, поэтому я ушел от того, что вы уже сделали + документации. Я бы сказал, что если у вас есть короткие коды, специфичные для модуля, то да, создание папки Shortcodes в модуле в порядке. Однако, если у вас есть короткие коды, которые могут использоваться несколькими модулями, вы, вероятно, просто хотите создать модуль Shortcodes. – patricus

0

Ответ один часть вашего вопроса:

1 - Поставщик услуг необходимо поместить в папку app.php конфигурации внутри Laravel проекта.

+0

Какой из них вы имеете в виду? Один из поставщика, которого я уже добавил. – mastercheef85

Смежные вопросы