一直想找notadd的后台时如何创建路由的,结果一直没有找到
今天总算是让我找到了
一下记录一下步骤
获取所有路由列表
1 | php notadd route:list > D:route.txt |
发现是在Notadd\Administration\Controllers\AdminController这个文件里定义的
我打开notadd\modules\administration\src\ModuleServiceProvider.php
看到ModuleServiceProvider的boot function是这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | /** * Boot service provider. * * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function boot() { $administrator = new Administrator( $this ->app[ 'events' ], $this ->app[ 'router' ]); $administrator ->registerPath( 'admin' ); $administrator ->registerHandler(AdminController:: class . '@handle' ); $this ->administration->setAdministrator( $administrator ); $this ->app->make(Dispatcher:: class )->subscribe(CsrfTokenRegister:: class ); $this ->app->make(Dispatcher:: class )->subscribe(PermissionGroupRegister:: class ); $this ->app->make(Dispatcher:: class )->subscribe(PermissionModuleRegister:: class ); $this ->app->make(Dispatcher:: class )->subscribe(PermissionRegister:: class ); $this ->app->make(Dispatcher:: class )->subscribe(PermissionTypeRegister:: class ); $this ->app->make(Dispatcher:: class )->subscribe(RouteRegister:: class ); $this ->loadTranslationsFrom( realpath (__DIR__ . '/../resources/translations' ), 'administration' ); $this ->loadViewsFrom( realpath (__DIR__ . '/../resources/views' ), 'admin' ); $this ->publishes([ realpath (__DIR__ . '/../resources/mixes/administration/dist/assets/admin' ) => public_path( 'assets/admin' ), realpath (__DIR__ . '/../resources/mixes/neditor' ) => public_path( 'assets/neditor' ), ], 'public' ); } |
重点是这几行
我不知道registerPath和registerHandler是做什么用的,那么我向上追溯到了notadd\vendor\notadd\framework\src\Administration\Abstracts\Administrator.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | /** * Init administrator. * * @throws \InvalidArgumentException */ final public function init() { if ( is_null ( $this ->path) || is_null ( $this ->handler)) { throw new InvalidArgumentException( 'Handler or Path must be Setted!' ); } $this ->router->group([ 'middleware' => 'web' ], function () { $this ->router->get( $this ->path, $this ->handler); }); } /** * Register administration handler. * * @param $handler */ public function registerHandler( $handler ) { $this ->handler = $handler ; } /** * Register administration route path. * * @param string $path */ public function registerPath( $path ) { $this ->path = $path ; } |
发现了这些代码,好吧 原来这个路由是在这里去绑定的······ 怪不得我开始怎么找也找不到呢
所以是吧/admin 绑定到了notadd\modules\administration\src\Controllers\AdminController.php 的 handle function
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /** * Return index content. * * @param \Notadd\Foundation\Extension\ExtensionManager $extension * @param \Notadd\Foundation\Module\ModuleManager $module * * @return \Illuminate\Contracts\View\View */ public function handle(ExtensionManager $extension , ModuleManager $module ) { $this ->share( 'extensions' , $extension ->getEnabledExtensions()); $this ->share( 'modules' , $module ->getEnabledModules()); $this ->share( 'translations' , json_encode( $this ->translator->fetch( 'zh-cn' ))); return $this ->view( 'admin::layout' ); } |
所以在这些操作之前,一定有一个地方初始化了所有的module
我想找到这个地方