Laravel – Многостраничный сайт / Проект

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

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

Имел ли кто-нибудь опыт работы с имитационным проектом в прошлом?

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

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

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

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/');