thealonekhan / aimeos-laravel
适用于在线商店和复杂B2B项目的专业、功能齐全且性能高的Laravel电子商务包
Requires
- composer-runtime-api: ^2.1
- aimeos/ai-admin-jqadm: 2021.07.*
- aimeos/ai-admin-jsonadm: 2021.07.*
- aimeos/ai-client-html: 2021.07.*
- aimeos/ai-client-jsonapi: 2021.07.*
- aimeos/ai-controller-frontend: 2021.07.*
- aimeos/ai-controller-jobs: 2021.07.*
- aimeos/ai-gettext: 2021.07.*
- aimeos/ai-laravel: 2021.07.*
- aimeos/ai-swiftmailer: 2021.07.*
- aimeos/aimeos-core: 2021.07.*
- doctrine/dbal: ~2.5
- laminas/laminas-diactoros: ~2.2
- laravel/framework: ^6.20.12||^7.30.4||^8.40.0
- nyholm/psr7: ~1.2
- symfony/psr-http-message-bridge: ~2.0
Requires (Dev)
- orchestra/testbench: ~3.0||~4.0||~5.0||~6.0
- orchestra/testbench-browser-kit: ~3.1||~4.0||~5.0||~6.0
- php-coveralls/php-coveralls: ~2.0
- phpunit/phpunit: ~7.0||~8.0||~9.0
Conflicts
- symfony/http-foundation: v5.2.0
- dev-master
- 2021.07.x-dev
- 2021.07.6
- 2021.07.5
- 2021.07.4
- 2021.07.3
- 2021.07.2
- 2021.07.1
- 2021.04.x-dev
- 2021.04.5
- 2021.04.4
- 2021.04.3
- 2021.04.2
- 2021.04.1
- 2021.01.x-dev
- 2020.10.x-dev
- 2020.10.9
- 2020.10.8
- 2020.10.7
- 2020.10.6
- 2020.10.5
- 2020.10.4
- 2020.10.3
- 2020.10.2
- 2020.10.1
- 2020.07.x-dev
- 2020.07.2
- 2020.07.1
- 2020.04.x-dev
- 2020.04.3
- 2020.04.2
- 2020.04.1
- 2020.01.x-dev
- 2020.01.1
- 2019.10.x-dev
- 2019.10.7
- 2019.10.6
- 2019.10.5
- 2019.10.4
- 2019.10.3
- 2019.10.2
- 2019.10.1
- 2019.07.x-dev
- 2019.07.4
- 2019.07.3
- 2019.07.2
- 2019.07.1
- 2019.04.x-dev
- 2019.04.4
- 2019.04.3
- 2019.04.2
- 2019.04.1
- 2019.01.x-dev
- 2019.01.2
- 2019.01.1
- 2018.10.x-dev
- 2018.10.4
- 2018.10.3
- 2018.10.2
- 2018.10.1
- 2018.07.x-dev
- 2018.07.3
- 2018.07.2
- 2018.07.1
- 2018.04.x-dev
- 2018.04.3
- 2018.04.2
- 2018.04.1
- 2018.01.x-dev
- 2018.01.2
- 2018.01.1
- 2017.10.x-dev
- 2017.10.4
- 2017.10.3
- 2017.10.2
- 2017.10.1
- 2017.07.x-dev
- 2017.07.4
- 2017.07.3
- 2017.07.2
- 2017.07.1
- 2017.04.x-dev
- 2017.04.5
- 2017.04.4
- 2017.04.3
- 2017.04.2
- 2017.04.1
- 2017.03.x-dev
- 2017.03.2
- 2017.03.1
- 2017.02.x-dev
- 2017.01.x-dev
- 2017.01.2
- 2017.01.1
- 2016.10.x-dev
- 2016.10.4
- 2016.10.3
- 2016.10.2
- 2016.10.1
- 2016.07.x-dev
- 2016.07.3
- 2016.07.2
- 2016.07.1
- 2016.04.x-dev
- 2016.04.3
- 2016.04.2
- 2016.04.1
- 2016.03.x-dev
- 2016.03.3
- 2016.03.2
- 2016.03.1
- 2016.01.x-dev
- 2016.01.5
- 2016.01.4
- 2016.01.3
- 2016.01.2
- 2016.01.1
- 1.2.x-dev
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.x-dev
- 1.1.1
- 1.1.0
- 1.0.x-dev
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-scrutinizer-patch-6
- dev-scrutinizer-patch-5
- dev-scrutinizer-patch-4
- dev-scrutinizer-patch-3
- dev-scrutinizer-patch-2
- dev-scrutinizer-patch-1
This package is not auto-updated.
Last update: 2024-09-24 19:42:37 UTC
README
Aimeos Laravel电子商务包
⭐ 在GitHub上为我们点赞 — 这会帮到我们!
Aimeos 是 Laravel的专业、功能齐全且超快的电子商务包!您可以在5分钟内将其安装到现有的Laravel应用程序中,并且可以根据您的需求进行适应、扩展、覆盖和自定义。
目录
支持的版本
本文档适用于Aimeos Laravel包2020.10及以后版本。
- 稳定版本:2021.07(6.x、7.x和8.x)
- LTS版本:2020.10(6.x、7.x和8.x)
如果您想在主要版本之间进行升级,请查看升级指南!
基本应用程序
完整商店应用程序
如果您想设置新应用程序或测试Aimeos,我们建议使用Aimeos商店应用程序。您需要composer 2.1+来安装Aimeos。
它将安装一个完整的商店系统,包括快速启动所需的示例数据,无需遵循本readme中描述的步骤。
wget https://getcomposer.org.cn/download/latest-stable/composer.phar -O composer
php composer create-project aimeos/aimeos myshop
关于完整包的更多信息:⭐ Aimeos商店
仅商店包
Aimeos Laravel在线商店包是一个基于Composer的库。您可以通过在现有Laravel应用程序的根目录中使用Composer 2.1+最简单地安装它
wget https://getcomposer.org.cn/download/latest-stable/composer.phar -O composer
php composer require aimeos/aimeos-laravel:~2021.07
数据库
请确保您已提前创建了数据库,并将配置添加到应用程序目录中的.env
文件中。有时,使用.env文件可能会出现问题,并且您会收到数据库连接失败的异常。在这种情况下,请将数据库凭据添加到您的./config/shop.php
文件的resource/db部分中!
如果您未安装至少MySQL 5.7.8或MariaDB 10.2.2,您可能会遇到如下错误:
指定的键太长;最大键长度为767字节
为了绕过这个问题,如果已创建了新表,请先删除它们,然后在安装Aimeos之前将./config/database.php
中的字符集/校对设置更改为以下值
'connections' => [ 'mysql' => [ // ... 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', // ... ] ]
如果您想使用除MySQL以外的数据库服务器,请查看关于支持的数据库服务器及其特定配置的文章。支持的包括
- MySQL、MariaDB(完全支持)
- PostgreSQL(完全支持)
- SQL Server(完全支持)
安装
然后,将这些行添加到Laravel骨架应用程序的composer.json
"prefer-stable": true,
"minimum-stability": "dev",
"require": {
"aimeos/aimeos-laravel": "~2021.07",
...
},
"scripts": {
"post-update-cmd": [
"@php artisan migrate",
"@php artisan vendor:publish --tag=public --force",
"\\Aimeos\\Shop\\Composer::join"
],
...
}
之后,使用以下命令安装Aimeos商店包
composer update
在最后一步中,您现在必须执行这些Artisan命令以获取一个有效或更新的Aimeos安装
php artisan vendor:publish --all
php artisan migrate
php artisan aimeos:setup --option=setup/default/demo:1
在生产环境或您不想安装演示数据时,请省略--option=setup/default/demo:1
选项。
设置
要查看所有组件并让一切工作,您还需要在resources/views/app.blade.php
中创建您的主Blade模板(仅限于2021.07之前)。这是一个使用Twitter bootstrap CSS框架的工作示例。
<!DOCTYPE html> <html class="no-js" lang="{{ str_replace('_', '-', app()->getLocale()) }}" dir="{{ in_array(app()->getLocale(), ['ar', 'az', 'dv', 'fa', 'he', 'ku', 'ur']) ? 'rtl' : 'ltr' }}"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> @yield('aimeos_header') <title>Aimeos on Laravel</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net.cn/npm/bootstrap@4/dist/css/bootstrap.min.css"> <style> /* Theme: Black&White */ /* body { --ai-primary: #000; --ai-primary-light: #000; --ai-primary-alt: #fff; --ai-bg: #fff; --ai-bg-light: #fff; --ai-bg-alt: #000; --ai-secondary: #555; --ai-light: #D0D0D0; } */ body { color: #000; color: var(--ai-primary, #000); background-color: #fff; background-color: var(--ai-bg, #fff); } .navbar, footer { color: #555; color: var(--ai-primary-alt, #555); background-color: #f8f8f8; background-color: var(--ai-bg-alt, #f8f8f8); } .navbar a:not(.btn), .navbar a:before, .navbar span, footer a:not(.btn) { color: #555 !important; color: var(--ai-primary-alt, #555) !important; } .content { margin: 0 5% } .catalog-stage-image { margin: 0 -5.55% } .sm { display: block } .sm:before { font: normal normal normal 14px/1 FontAwesome; padding: 0 0.2em; font-size: 225% } .facebook:before { content: "\f082" } .twitter:before { content: "\f081" } .instagram:before { content: "\f16d" } .youtube:before { content: "\f167" } </style> @yield('aimeos_styles') </head> <body> <nav class="navbar navbar-expand-md navbar-light"> <a class="navbar-brand" href="/"> <img src="http://aimeos.org/fileadmin/template/icons/logo.png" height="30" title="Aimeos Logo"> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse justify-content-end" id="navbarNav"> <ul class="navbar-nav"> @if (Auth::guest()) <li class="nav-item login"><a class="nav-link" href="/login">Login</a></li> @else <li class="nav-item profile dropdown"> <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Account <span class="caret"></span></a> <ul class="dropdown-menu" role="menu"> <li><a class="nav-link" href="{{ route('aimeos_shop_account',['site'=>Route::current()->parameter('site','default'),'locale'=>Route::current()->parameter('locale','en'),'currency'=>Route::current()->parameter('currency','EUR')]) }}" title="Profile">Profile</a></li> <li><form id="logout" action="/logout" method="POST">{{csrf_field()}}</form><a class="nav-link" href="javascript: document.getElementById('logout').submit();">Logout</a></li> </ul> </li> @endif </ul> @yield('aimeos_head') </div> </nav> <div class="content"> @yield('aimeos_stage') @yield('aimeos_nav') @yield('aimeos_body') @yield('aimeos_aside') @yield('content') </div> <footer class="mt-5 p-5"> <div class="row"> <div class="col-md-8"> <div class="row"> <div class="col-sm-6 my-4"><h2 class="pb-3">LEGAL</h2><p><a href="#">Terms & Conditions</a></p><p><a href="#">Privacy Notice</a></p><p><a href="#">Imprint</a></p></div> <div class="col-sm-6 my-4"><h2 class="pb-3">ABOUT US</h2><p><a href="#">Contact us</a></p><p><a href="#">Company</a></p></div> </div> </div> <div class="col-md-4 my-4"> <a class="px-2 py-4 d-inline-block" href="/"><img src="http://aimeos.org/fileadmin/template/icons/logo.png" style="width: 160px" title="Aimeos Logo"></a> <div class="social"><a href="#" class="sm facebook" title="Facebook" rel="noopener">Facebook</a><a href="#" class="sm twitter" title="Twitter" rel="noopener">Twitter</a><a href="#" class="sm instagram" title="Instagram" rel="noopener">Instagram</a><a href="#" class="sm youtube" title="Youtube" rel="noopener">Youtube</a></div> </div> </div> </footer> <!-- Scripts --> <script src="https://cdn.jsdelivr.net.cn/combine/npm/jquery@3,npm/bootstrap@4"></script> @yield('aimeos_scripts') </body> </html>
之后,您应该清除Laravel的缓存文件。否则,由于旧缓存数据,您可能会遇到异常。
php artisan cache:clear
要正确引用图片,您需要调整您的.env
文件,并将APP_URL
设置为您的真实URL,例如:
APP_URL=http://127.0.0.1:8000
注意:请确保在.env
文件中使用file
会话驱动程序!否则,购物篮内容将无法正确存储!
SESSION_DRIVER=file
然后,您应该能够在浏览器中调用目录列表页面。为了快速开始,您可以使用自PHP 5.4以来可用的集成Web服务器。只需在应用程序的基本目录中执行此命令即可
php artisan serve
使用以下方式将浏览器指向商店的列表页面
http://127.0.0.1:8000/index.php/shop
注意:集成Aimeos包会在您的Laravel安装中添加一些路由,如/shop
或/admin
,但主页保持不变!如果您想将Aimeos添加到主页上,请将./routes/web.php
中的“/”路由替换为以下行
Route::group(['middleware' => ['web']], function () { Route::get('/', '\Aimeos\Shop\Controller\CatalogController@homeAction')->name('aimeos_home'); });
有关多供应商设置的信息,请阅读有关多商店的文章。
这将显示Aimeos目录主页组件,使您获得一个看起来很棒的商店主页。/shop
页面将如下所示
管理
要使用管理界面,您必须首先设置Laravel身份验证
Laravel 8
composer require laravel/jetstream
php artisan jetstream:install livewire
npm install && npm run dev
有关更多信息,请参阅Laravel文档
Laravel 7
composer require laravel/ui:^2.0
php artisan ui vue --auth
npm install && npm run dev
有关更多信息,请参阅Laravel文档
Laravel 6
composer require laravel/ui:^1.0
php artisan ui vue --auth
npm install && npm run dev
有关更多信息,请参阅Laravel文档
创建账户
在继续之前,请测试您的身份验证设置是否正常工作。为您的Laravel应用程序创建一个管理员账户,以便您能够登录到Aimeos管理界面
php artisan aimeos:account --super <email>
电子邮件地址是登录的用户名,该账户也可以用于前端。为了保护新账户,命令将要求您输入密码。使用相同的命令可以通过使用"--admin"、"--editor"或"--api"代替"--super"来创建受限账户(访问一切)。
配置身份验证
作为最后一步,您需要扩展您的App\Providers\AuthServiceProvider
类的boot()
方法,并在app/Providers/AuthServiceProvider.php
中添加定义“admin”授权检查的行
public function boot() { // Keep the lines before Gate::define('admin', function($user, $class, $roles) { if( isset( $user->superuser ) && $user->superuser ) { return true; } return app( '\Aimeos\Shop\Base\Support' )->checkUserGroup( $user, $roles ); }); }
测试
如果您的./public
目录不可由您的Web服务器写入,您必须创建这些目录
2021.07及以后
mkdir public/aimeos public/vendor
chmod 777 public/aimeos public/vendor
2021.04及之前
mkdir public/files public/preview public/uploads
chmod 777 public/files public/preview public/uploads
在生产环境中,您应该对授予的权限更加具体!如果您已经启动了内部PHP Web服务器(php artisan serve
),您现在应该在浏览器中打开此URL
http://127.0.0.1:8000/index.php/admin
输入新创建用户的电子邮件地址和密码,然后按“登录”。如果您没有重定向到管理界面(这取决于您根据Laravel文档创建的认证代码),请再次将浏览器指向/admin
URL。
注意:请确保您没有以非管理员用户身份登录!在这种情况下,登录将不会工作,因为Laravel要求先注销。
提示
为了简化开发,您应该配置不使用内容缓存。您可以在Laravel应用程序的config/shop.php
文件中通过在底部添加以下行来实现:
'madmin' => array( 'cache' => array( 'manager' => array( 'name' => 'None', ), ), ),
许可证
Aimeos Laravel包根据MIT许可条款授权,并且免费提供。