hoppermagic / kobalt

一套可重用的视图和代码,帮助构建小型Laravel后端

v1.0.15 2022-10-05 10:24 UTC

README

一套管理视图和功能,以加快在Laravel中构建小型自定义内容管理系统的开发速度...

使用步骤

如果它没有自动发现

Config/app.php

Hoppermagic\Kobalt\KobaltServiceProvider::class

包将自动添加以下内容,但您可能希望将这些添加到config.app中

Kris\LaravelFormBuilder\FormBuilderServiceProvider::class,
Laracasts\Flash\FlashServiceProvider::class,

'FormBuilder' => Kris\LaravelFormBuilder\Facades\FormBuilder::class,
'Flash'	=> Laracasts\Flash\Flash::class,

设置数据库首选项

运行标准的Laravel认证生成器

php artisan make:auth
php artisan migrate

注册自己,禁用web.php中的认证路由

将Router.php(auth方法)中的非注册路由添加到web.php中

记得取消注释Auth::routes()

从5.8版本开始,如果路由不存在,将不会显示注册

app.blade.php也包含对注册路由的引用,因此需要取消注释

// From 5.8?
 
Auth::routes(['register', false]);

OR

//!TODO MAKE SURE YOU USE THE ONES FROM ROUTER.PHP
// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');

管理区域web路由

可以将这些放入它们自己的admin.php文件中...

Route::group([
        'namespace' => 'Admin',
        'prefix' => 'admin',
        'as' => 'admin.']
    ,function(){

        // STORIES
        Route::get('story/{story}/confirmdel', [
            'as' => 'story.confirmdel',
            'uses' => 'StoriesController@confirmDelete'
        ]);
        Route::resource('/story', 'StoriesController', [
            'except' => ['show'],
        ]);

        // STORY IMAGES
        Route::get('story/{story}/storyimage/{storyimage}/confirmdel', [
            'as' => 'story.{story}.storyimage.{storyimage}.confirmdel',
            'uses' => 'StoryImageController@confirmDelete'
        ]);
        Route::get('/story/{story}/storyimage/createbulk', 'StoryImageController@createBulkUpload')->name('storyimage.createbulk');
        Route::post('/story/{story}/storyimage/storebulk', 'StoryImageController@storeBulkUpload')->name('storyimage.storebulk');
        Route::resource('/story/{story}/storyimage', 'StoryImageController', [
            'except' => ['show','index'],
        ]);
        
        // Stories ajax routes
        Route::post('story/{story}/edit/imageload', 'StoriesController@imageGalleryLoad');
        Route::post('story/{story}/edit/imagesort', 'StoriesController@imageGallerySort');
        Route::post('story/sort', 'StoriesController@overviewSort');
    }
);

确保以下内容指向管理主页

Controllers\Auth\LoginController

Controllers\Auth\RegisterController

Controllers\Auth\ResetPasswordController

Middleware\RedirectIfAuthenticated

protected $redirectTo = '/admin/overviewpage'; // Admin landing page

管理模板中的CSS和JS链接

app.blade.php

<link href="{{ asset('css/admin.css') }}" rel="stylesheet">
<script src="{{ asset('js/admin.js') }}"></script>

or

<script src="{{ asset('js/admin.js') }}" defer></script>

视图组合器

注意,KobaltServiceProvider确保在管理导航部分中可用的active变量,它推入segment(2),因此请确保这是您想要的。尚未决定这是否是一个好主意。

发布资源

admin js

admin enhancements - 容易设置tiny_mce、select2等的便捷位置

css

admin images

admin nav partial

admin template

需要更新此文件以使用来自app.blade.php的最新结构。拉入本地版本的tiny mce

使用强制覆盖

发布所有管理视图后,修改导航部分

php artisan vendor:publish --provider="Hoppermagic\Kobalt\KobaltServiceProvider" --tag=default --force

发布所有管理视图

php artisan vendor:publish --provider="Hoppermagic\Kobalt\KobaltServiceProvider" --tag=admin-views --force

仅发布CSS和JS

php artisan vendor:publish --provider="Hoppermagic\Kobalt\KobaltServiceProvider" --tag=css-js --force

如果您需要重新编译js/css

npm run production

创建模型、管理控制器、表单和请求

将创建RabbitController等

php artisan make:ko-resources Rabbit
php artisan make:ko-controller Rabbit
php artisan make:ko-form Rabbit

//!TODO config/app.php

//!TODO 关于可编辑、可删除、可添加的说明

表单

Form Builder静态类型现在已转义,因此如果您需要传递视图,则需要使用未转义的静态。

$this->addCustomField('unescaped-static', 'Hoppermagic\Kobalt\Forms\Fields\UnescapedStaticType');

桌面上的表单字段宽度将是60%,除非

'attr' => [
    'class' => 'form-control full-width'
],

富文本字段

'attr' => [
    'class' => 'rich-text'
],