unrulynatives / laravel-starter-kit
Unruly Natives Laravel 框架入门套件
Requires
- php: >=5.6.4
- amranidev/scaffold-interface: dev-master
- arcanedev/log-viewer: ~3.0
- arcanedev/no-captcha: ~3.0
- arrilot/laravel-widgets: dev-master
- barryvdh/laravel-debugbar: *
- barryvdh/laravel-translation-manager: dev-master
- classygeeks/potion: dev-master
- cmgmyr/messenger: ~2.0
- cviebrock/eloquent-sluggable: dev-master
- doctrine/dbal: 2.4.5
- fabpot/goutte: ~3.1
- igaster/laravel-theme: ~1
- intervention/image: 2.*
- jenssegers/agent: ~2.3
- jenssegers/date: ^3.2
- laravel/framework: 5.3.*
- laravel/socialite: ~2.0
- laravelcollective/html: 5.3.x-dev
- rtconner/laravel-likeable: 1.*
- rtconner/laravel-tagging: 2.*
- simplesoftwareio/simple-qrcode: 1.*
- spatie/geocoder: ^2.1
- spatie/laravel-activitylog: ^1.6
- spatie/laravel-analytics: ^2.1
- spatie/laravel-backup: ^3.9
- spatie/laravel-link-checker: ^1.0
- spatie/laravel-or-abort: ^1.0
- spatie/laravel-permission: 1.5.*@dev
- spatie/laravel-responsecache: dev-master
- spatie/laravel-url-signer: ^1.1
- thyagobrejao/laravel-commentable: ^1.0
- unicodeveloper/laravel-password: 1.0.*
- unrulynatives/attitudes: 0.*
- unrulynatives/helpers: 0.*
- watson/rememberable: dev-master
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.0
- symfony/css-selector: 3.1.*
- symfony/dom-crawler: 3.1.*
README
这是一个专为与全新的或旧的 Laravel 5.3 应用程序一起使用而设计的入门套件。
- 所有路由都使用
unstarter
前缀,以避免与您的开发工作冲突。
只有少数几个与应用程序冲突的汇聚点。这些点是
-
在您的
app\Providers\RouteServiceProvider.php
中注册的路由文件。该文件包含在unrulynatives/helpers
包中,您需要发布它(请参阅包的 readme.md)。 -
在您的
config/app.php
中声明的包服务提供者和外观。这些包默认已注册。如果不想使用某个包,只需注释掉服务提供者,并从composer.json
中删除该包。 -
在
app/User.php
模型中声明的特性。其中之一是use Unrulynatives\Helpers\UserExtensions;
。 -
一些依赖项,例如
"Amranidev/scaffold-interface"
,在包中定义了自己的路由,而不是在路由文件中定义。处理此类冲突的一种方法是将App\Providers\RouteServiceProvider::class,
移动到包服务提供者声明下方。
演示
在此处可以找到可用的功能数据库列表:DEMO 应用程序在此
这是什么
- 这是 Laravel PHP 框架 5.3 的一个实例。这是一个入门应用程序。其哲学与类似的入门套件略有不同。以下是亮点
-
对原始 Laravel 应用程序所做的所有更改都有面向初学者的注释。如果您认为它们不必要,可以删除它们。
-
一些解决方案有变体,这样每个人都可以选择适合当前需求的变体。
-
我已经安装了主题系统(igaster/laravel-theme),以提供针对不同 CSS 框架的解决方案。您可以根据需要切换它们
- 我是一个业余程序员,而不是专业人士。我将这个入门应用程序和独立的辅助包视为自学教程。这两个包最初是我的私有代码库,包括代码片段、解决方案、StackOverflow 上的答案和项目开发中需要的思想。它们包含所有可能有用的代码。
有关原始 Laravel 框架,请访问 Laravel 仓库
特性
在 DEMO 网站 上提供了实现和未来功能的完整数据库列表。大多数功能都是通过预配置的第三方包开发的。
各种解决方案
- A gravatar displaying code (see model `getGravatarAttribute` in `App/User.php`).
- slugs for models powered by `cviebrock/eloquent-sluggable` package.
- Two themes pre-defined, powered by `igaster/laravel-theme`.
- some examples of `intervention/image` for manipulating images.
- login by invoking modal.
- QR code generator for any page, reloads for changes of hashtag value (See JS feature above). Provided by `simplesoftwareio/simple-qrcode`
- the app can recognize type of user's device, thanks to `jenssegers/agent`.
- Date presenters provided by `jenssegers/date` package. Extra helpers also available
- A simple upvoting system powered by `rtconner/laravel-likeable`.
- Model tagging powered by `rtconner/laravel-tagging`.
- commenting of models powered by `slynova/laravel-commentable`.
管理工具
- Mass removal of records with field `status` == `null`. Easily adjustable for other purposes.
- Wholesale recreation of slugs. Needed when you decide to implement slugs after a number of records is already submitted by users
- user tracking (`spatie/laravel-activitylog`)
- `/admin/server-status` - point your browser here to display server status, Laravel version and php version
- DB and app backup powered by `spatie/laravel-backup`. A cron job pre-configured.
- permission system provided by `spatie/laravel-permission`.
开发工具和功能
- Laravel debugbar
- A very handy scaffolding interface, DB-powered. `Amranidev/scaffold-interface`.
- some scaffolding methods provided by `laralib/l5scaffold`.
- manage translation files - URL `translations`. Powered by `barryvdh/laravel-translation-manager`.
- see logs of your app thanks to `arcanedev/log-viewer` package.
-
CSS/JS 修改和改进
- Bootstrap: dropdown on hover (see `css/common_elements.css`)
- Bootstrap: button with icon on one side. See example at `docs/components_common`.
- CSS classes for common CSS elements which I use most frequently. All are listed here `docs/components_common`
JavaScript & jQuery 脚本
- A script to load DOM patches via jQuery (`js/minitool_dom_patch.js`). A variation of the script displays an JS alert (`js/minitool_dom_patch_with_confirm.js`)
- A script to set hash value when switching between tabs on a page (`js/minitool_tabhas_bootstrap.js`).
- 3 frontend solutions to show/reveal more content. (`js/minitool_showhide.js`). Example: an attribite `data-more-close` hides an element by use of jQuery `slideUp` at the page load.
- A solution to load content into a modal. Content can be cloned from hidden DOM elements of loaded by AJAX (`js/minitool_modal_universal.js`).
其他不太重要的包和功能
- Translate an address into GPS coordinates thanks to `spatie/geocoder`.
- Creating expirable links, powered by `spatie/laravel-url-signer`.
未来功能
###已安装但未配置且没有示例用法的包
- `spatie/laravel-link-checker`.
- `spatie/laravel-or-abort`.
- Social logins powered by `laravel/socialite`.
- caching your queries thanks to `watson/rememberable`.
- spatie/laravel-analytics
- spatie/laravel-responsecache
- unicodeveloper/laravel-password
- arcanedev/no-captcha
- arrilot/laravel-widgets
- classygeeks/potion
- User-2-user messages, powered by `cmgmyr/messenger`
###要编写的代码(欢迎贡献者!)
- return to the original page after login
- User AVATAR supported locally instead of Gravatar - by user's choice
- spam prevention: blocking certain email domains from registering as users. Sometimes needed to stop bot registration
- advanced voteup/votedown system provided as an external package
- solution for storing user options in a separate table linked to User model by hasMany relation
此项目使用的包列表
在 DEMO 应用程序 中提供了数据库列表
### this is the `collective` equivalent - used temporarily for the still unreleased Laravel 5.3
"laravie/html": "~5.3",
### Theme system. This App uses it for switching between CSS frameworks
"igaster/laravel-theme": "~1",
### A complete roles/auth solution.
"spatie/laravel-permissions": "2.1.*@dev",
See URL `admintools/assign-roles`
### detects if user is using a mobile or a desktop device
"jenssegers/agent" : "~2.3",
### slugs
"cviebrock/eloquent-sluggable": "dev-master",
### a simple admin panel
"laraveldaily/quickadmin": "^1.1",
### tagging for models
"rtconner/laravel-tagging": "2.*",
### comment system
"slynova/laravel-commentable": "^2.0"
This system supports replies at multiple level.
###Tracking user activity
"spatie/laravel-activitylog": "^1.2",
See URL `admintools/user-track`
安装
变体 1:合并到现有项目中
注意:对原始 Laravel 5.3 Laravel 应用程序所做的所有文件和更改都是允许您删除一些或所有功能的方式。
- All view files are stored in `starter` folder with exception of
- `auth` folder which is created by the native Laravel command `php artisan make:auth`
- all routes for the Starter functions are placed in `routes/starter.app`. You can comment out the routes in bulk or undegister the route file in `app/Providers/RouteServiceProvider.php`
- Controllers for the Starter App are stored in subfloder `app/Http/Controllers/Starter`
变体 2:设置新应用程序
-
将此入门套件拉取到本地驱动器
-
运行
composer install
命令。您需要先安装 Composer 本身才能执行此操作。请参阅 Composer 下载页面。 -
使用 shell 命令
artisan key:generate
生成应用密钥 -
克隆文件
.env.example
并将其重命名为.env
-
创建并填充数据库。请确保
-
将数据库凭据放置到
.env
文件中:DB_CONNECTION=mysql // 这是默认的 mysql 数据库连接。您可以稍后定义额外的连接。DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret -
在您的
config/database.php
文件中,您需要将mysql
连接指向您的.env
文件。
- 启动 Laravel 的捆绑认证功能。如此处所述,使用
php artisan make:auth
命令。
您还需要在数据库中创建表。使用 php artisan migrate
来执行此操作。
最后一步
完成以上步骤后,应用程序应该可以正常工作。将浏览器指向 localhost/APP_FOLDER/public/
。您应该看到登录页面。(此解决方案需要数据库连接才能正常工作)将浏览器指向 localhost/APP_FOLDER/public/welcome
。您应该看到登录页面。(您将看到 Laravel 提供的标准欢迎屏幕)
将此包与裸 Laravel 应用程序集成
此启动器旨在与尽可能少的“空白”应用程序修改一起与裸 Laravel 应用程序一起使用。原因是简单的:有时候 Laravel 的新版本会带来应用程序结构的更改。
大多数文件都是由 unrulynatives/helpers
包复制的:一旦发布包资产,所有必要的文件都会出现在您的应用程序中
-
从
app/Http/Middleware
复制中间件,并在\app\Http\Kernel.php
字段中注册它们。 -
复制
app/Helpers
和app\Models
。 -
将
\config\project_specific.php
文件复制到目标应用程序的config\
文件夹。
集成
- 注册您已复制的中间件。打开您的
app\Http\Kernel.php
并添加
'admins' => \App\Http\Middleware\AllowAdmins::class,
'moderators' => \App\Http\Middleware\AllowModerators::class,
'developers' => \App\Http\Middleware\AllowDevelopers::class,
到 protected $routeMiddleware
。
- 在
app\Providers\AppServiceProvider.php
中添加您的形态类定义。使用 https://laravel.net.cn/docs/5.3/upgrade 中的说明
可选步骤。MySQL 5.7 的最新更改导致应用程序出现一些令人烦恼的问题。这是避免它们的方法。使用以下方式修改数据库连接定义
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
// 'strict' => true,
// 'engine' => null,
// https://github.com/laravel/framework/issues/14908
'strict' => true,
'engine' => null,
'modes' => [
//'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION'],
],
贡献指南
只需分叉项目,调整代码或提供您的代码,然后发起拉取请求。
关于此启动器包
我是一名业余程序员,试图创建一个用于决策的复杂应用程序。该项目已于 2011 年在波兰启动。现在代码和内容已调整到其他语言。要点:该应用程序注册公共人物和其他在公共空间中出现的行动者的行动,以生成动态的“较小之恶”列表,用于选民和消费者决策。所需的功能类似于 Buycott.com 应用程序的功能。
如果您喜欢这种应用程序背后的想法并且愿意贡献,请与我联系。
关于 Laravel 框架
安全漏洞
如果您在 Laravel 中发现安全漏洞,请发送电子邮件至 Taylor Otwell,邮箱地址为 taylor@laravel.com。所有安全漏洞都将得到及时处理。
许可证
Laravel 框架是开源软件,采用 MIT 许可证。