메뉴 건너뛰기

사용자별 개인화 설정 추가시
<?php

$UserHandler = app('xe.user');
$UserHandler->setSettingsSections('game', [
	'title' => '게임 연동 설정',
	
	'content' => function($User) {
		$Controller = new GameAssociationSettings($User);
		return $Controller->index();
	},
			
	'display' => true,
	'ordering' => -1
]);

 

이게 Route::get, Route::post 처럼 클래스를 지정하거나,
중간에 미들웨어를 끼워 넣을 수 있는 방법이 없을까요?

이렇게 등록한 메뉴를 참조하는 XE3쪽 코드는

<?php
/**
 * Show section for user setting.
 *
 * @param Request $request request
 * @param string  $section section
 * @return \Xpressengine\Presenter\Presentable
 */
public function show(Request $request, $section = 'settings')
{
	// get sections
	$menus = $this->handler->getSettingsSections();

	// get Selected section
	if (isset($menus[$section]) === false) {
		throw new NotFoundHttpException();
	}

	$menus[$section]['selected'] = true;
	$selectedSection = $menus[$section];

	// get current user
	$user = $request->user();

	$content = $selectedSection['content'];
	$selectedSection['selected'] = true;
	$tabContent = $content instanceof \Closure ? $content($user) : $content;

	expose_trans('xe::validatorMin');
	expose_trans('xe::passwordIncludeNumber');
	expose_trans('xe::passwordIncludeCharacter');
	expose_trans('xe::passwordIncludeSpecialCharacter');
	expose_trans('xe::enterPasswordConfirmation');

	return XePresenter::make('index', compact('user', 'menus', 'tabContent'));
}

 

이렇게 되어 있고, 컨텐트는 반드시 문자열 혹은 함수로만 넘어가게 되어 있어요.
해당 메뉴를 출력 해줘야 하는 회원과 해주면 안되거나, 해줄 필요가 없는 회원 별로 처리를 해줄 수 있어야 하는데,
이걸 어떻게 처리해야 할지 감이 안잡힙니다.

현재 setSettingsSections 메서드를 호출해주고 있는 위치는 Plugin 클래스의 boot 메서드이고,
해당 메뉴를 노출해줘야 하는지, 말아야 하는지 결정하는 루틴을 어디서 구성해야하는지,
혹은 이러한 구성이 현재 구현된 core로는 가능하지 않아서 직접 구현해야 하는지가 궁금합니다.

($menus --> 얘 안에 들어있는걸 적절히 조작해주면 될꺼 같긴 한데...)

  • share