В настоящее время я ищу рамки для поддержки моей собственной новой структуры. Кажется, мой лучший выбор – 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/');