2016-12-02 1 views
-2

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

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

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

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

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

project setup

ответ

3

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