Laravel — Мульти Сайт / Проект

В настоящее время я ищу фреймворк для поддержки моего нового фреймворка. Laravel, кажется, мой лучший выбор.

Я имею в виду очень специфическую структуру. Мой проект будет иметь базовый дизайн с общими моделями, представлениями и контроллерами, а также некоторые подпроекты с конкретными представлениями. Цель состоит в том, чтобы предоставить платформу для владельцев того же бизнеса, где мы предоставляем уникальный сайт. Во многих случаях меняется только дизайн, а структура и компоненты остаются неизменными. Моя идея состояла в том, чтобы создать поддерживаемую структуру на laravel, из которой каждый сайт извлекает свои модели, контроллеры и представления, и, если есть особая необходимость, можно создать дополнительное представление.

Был ли у кого-то опыт с симулированным проектом в прошлом?

Я вижу некоторые основные препятствия:

  • Создание подпроектов
  • Использование нескольких подключений к базе данных
  • Использование моделей и видов из основного проекта

настройка проекта

-2

Решение

Laravel очень гибок и легко настраивается, у вас не должно быть никаких проблем с такими вещами вообще. Что касается базы данных, например, вы можете создать два соединения: mainфиксированное соединение с вашими основными таблицами базы данных и project для таблиц текущего проекта, вот как это должно выглядеть:

'main' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],

'project' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],

И вы должны быть в состоянии:

Настройте модель подключения:

<?php

namespace App;

class Posts extends Model
{
protected $connection = 'project';
}

Запросить соединения напрямую:

 DB::connection('project')->table('users')->where('activated', true)->get();

Настройте базу данных во время выполнения:

 config([
'database.connections.project.database' => 'project1db',
'database.connections.project.user' => $user,
'database.connections.project.password' => $password,
]);

Что касается представлений, вы можете указать Laravel найти представления там, где вам нужно, просто выполнив:

View::addLocation('/path/to/project1/');
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]