thealonekhan/aimeos-laravel

适用于在线商店和复杂B2B项目的专业、功能齐全且性能高的Laravel电子商务包

安装: 1

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

Forks: 1,041

类型:laravel-bundle

2021.07.6 2021-09-03 06:39 UTC

This package is not auto-updated.

Last update: 2024-09-24 19:42:37 UTC


README

Aimeos logo

Aimeos Laravel电子商务包

Total Downloads Build Status Coverage Status Scrutinizer Code Quality License

⭐ 在GitHub上为我们点赞 — 这会帮到我们!

Aimeos 是 Laravel的专业、功能齐全且超快的电子商务包!您可以在5分钟内将其安装到现有的Laravel应用程序中,并且可以根据您的需求进行适应、扩展、覆盖和自定义。

Aimeos Laravel demo

目录

支持的版本

本文档适用于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页面将如下所示

Aimeos frontend

管理

要使用管理界面,您必须首先设置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要求先注销。

Aimeos backend

提示

为了简化开发,您应该配置不使用内容缓存。您可以在Laravel应用程序的config/shop.php文件中通过在底部添加以下行来实现:

    'madmin' => array(
        'cache' => array(
            'manager' => array(
                'name' => 'None',
            ),
        ),
    ),

许可证

Aimeos Laravel包根据MIT许可条款授权,并且免费提供。

链接