基本Laravel /编程问题

时间:2016-01-17 09:00:52

标签: php laravel laravel-5

我试图正确构建我的应用程序并在加载类时遇到一些麻烦。

所以我的第一个问题是:ServiceProviders只是绑定接口,对吗?

我怎么办,在启动应用程序时加载了我的类。

更具体地说,我尝试包含Pingpong Sky的Shortcode逻辑: http://sky.pingpong-labs.com/docs/2.0/shortcode

我现在所做的是制作一个文件夹Shortcodes并放在那里:

<?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');

我还尝试在PSR-4自动加载中添加文件夹,但它不起作用。

我有一个中间件:

<?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;
    }
}

这一部分有效。

那么,我需要在哪里放置Shortcode定义代码,如何使它被加载以及什么是构造它的好方法?

2 个答案:

答案 0 :(得分: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>';
     }
}

接下来,使用模块的服务提供商将短代码注册到短代码类。在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以确保自动加载器知道您的新目录和类。

答案 1 :(得分:0)

回答你问题的一部分:

1 - 服务提供商需要将您的laravel项目放在app.php config文件夹下。