我试图正确构建我的应用程序并在加载类时遇到一些麻烦。
所以我的第一个问题是: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定义代码,如何使它被加载以及什么是构造它的好方法?
答案 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文件夹下。