Laravel Admin Bar라는 패키지를 개발했습니다.
최초 패키지 개발
Laravel에 Admin Bar를 쉽게 추가할 수 있는 패키지를 개발했습니다.
Admin Bar란?
블로그 시스템 등의 프런트측의 페이지를 표시하고 있을 때 표시되는 관리자용의 툴바입니다.
Wordpress에도 있습니다.
자신이 만든 기사를 읽고, 오자를 찾아 편집하고 싶을 때 등에 툴바에 [이 기사 편집] 같은 버튼이 있으면 편리하네요.
왜 만들었습니까?
윙 라고 하는, Medium나 Ghost와 같은 블로그 서비스의 Laravel판 같은 OSS가 있습니다만, 거기에 Admin Bar의 기능이 없었기 때문에 패키지를 만들기로 했습니다.
wink용의 래퍼의 패키지를 만들어 나중에 wink에 짜넣어 주지 않을까 물어 보려고 생각하고 있습니다.
그건 그렇고, wink은 Laravel의 개발 멤버 중 한 명이하고 있습니다. 소스가 깨끗하고 공부가 되는 것으로 아직 발매되었을 뿐이므로 OSS에 참가해 보고 싶다고 하는 분은 봐 보면 좋을지도 모릅니다.
기본 사용법
자세한 사용법은 GitHub 에 올려져 있습니다. (현재는 영어 전용)
설정은 모두 config 파일로 할 수 있도록 되어 있습니다.
composer require shrft/laravel-admin-bar
php artisan vendor:publish --provider="Shrft\AdminBar\AdminBarServiceProvider"
publish 명령을 실행하면 config 디렉토리 아래에 adminbar.php라는 파일이 생성됩니다.
해당 파일을 편집합니다.
다음은 config/adminbar.php에 설명을 기입한 것입니다.
return array(
// falseにするとAdmin Barが無効になります。
'enabled'=>true,
/**
* 除外するURL。管理画面ではAdmin Bar不要だと思いますので、ここで管理画面のパスを指定してください。
* 現在のURLがここで指定したパスに一致するかどうかは Request::is()を利用してチェックしています。
**/
'excludes' => 'admin/*',
/**
* 管理者としてログインしている場合のみAdmin Barを表示するため管理者かどうかチェックするためのロジック
* をここに追加してください。
*/
'is_admin' => function(){
//例としてこんな感じのチェック処理を入れてみました。常に表示したい場合は、trueを返してもらえればOKです。
if( Auth::user() && Auth::user()->isAdmin()){
return true;
}
return false;
},
/**
* ここで表示する内容を指定します。
* */
'menus' => array(
// タイトルはメニューに表示される名称、pathは表示されるリンクです。
['title'=>'管理画面TOP', 'path'=>'/admin'], // こんなリンクが追加されます。-> <a href="/admin">管理画面TOP</a>
['title'=>'記事の追加', 'path'=>'/admin/post/new'],
),
);
이제 다음과 같은 도구 모음이 표시됩니다.
기사 페이지를 볼 때만 기사의 편집 페이지 링크를 보는 방법?
기사 페이지의 편집 페이지에 대한 링크를 표시하는 방법에 대한 예입니다.
블로그 사이트에서 다음과 같이 경로가 정의되어 있다고 가정합니다.
# 記事ページ
Route::get('/post/{id}', ['uses'=>'PostController@show']);
# 管理画面ページ
Route::get('/admin/post/edit/{id}', ['uses'=>'Admin\PostController@edit']);
이 경우 다음과 같이 정의하여 기사 페이지의 편집 링크를 볼 수 있습니다.
'menus' => array(
['title'=>'管理画面TOP', 'path'=>'/admin'],
['title'=>'この記事を編集する',
// 記事編集画面など現在のURLから動的にリンクを生成したい場合は、以下の様にcallbackが利用できます。
'path'=>function($request){
$postid = $request->route('id');
return '/admin/post/edit/' . $postid;
},
// 記事ページでのみリンクを表示するため、filterに記事ページのURLのパターンを指定します。
// filterにもcallbackを利用することができます。trueを返すとリンクを表示します。
'filter'=>'post/*'],
),
드롭다운 표시
다음과 같이 path에 배열을 전달하여 드롭다운 표시를 할 수 있습니다.
'menus' => array(
['title'=>'管理画面TOP', 'path'=>'/admin'],
['title'=>'ドロップダウン', 'path'=>[
['title'=>'メニュー1', 'path'=>'/path/to/option1'],
['title'=>'メニュー2', 'path'=>'/path/to/option2']
]
],
),
우려와 앞으로
사용해 주셔서 버그를 찾아내거나 좀더 이런 것 같은 것 같으면 꼭 풀릭 부탁드립니다!
함께 Wink에 통합 할 수있는 멋진 패키지를 만드십시오!
github
아래에 스스로도 대응하지만 누군가 해주면 기쁠지도 모른다는 것을 리스트 업했습니다.
버그 & 개선
path나 filter에 callback을 건네주어 동적으로 값을 생성하도록 하고 있지만, 설정 파일에 복잡한 처리가 있는 것은 좋지 않기 때문에 다른 방법을 생각한다.
예를 들면 다음과 같이 정의해 두면 AdminHelper 클래스의 getEditUrl을 호출해 그 함수가 동적인 URL을 돌려준다면?
'menus' => array(
['title'=>'この記事を編集する', 'path'=>'AdminbarHelper@getEditUrl'],
),
또는 Laravel Nova 같은 느낌으로 설정을 정의하도록 한다?? 아이디어 모집중입니다.
기능 & 아이디어
여기까지 읽어 주셔서 감사합니다!!!!
Reference
이 문제에 관하여(Laravel Admin Bar라는 패키지를 개발했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shrft/items/04ca92407c00fc9f9093텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)