Я новичок в laravel. Согласно моим исследованиям в этой области, я считаю, что это очень полезно для моих проектов. Однако мне сложно настроить его для использования одного экземпляра структуры laravel для нескольких проектов. Я не хочу следовать методу многосайтового сайта, доступного в laravel, т. Е. Используя структуру каталогов в моделях и контроллерах для проектов, потому что я не смогу продвигать изменения, связанные с моим проектом, за один шаг в git.
Я хочу что-то подобное.
общая библиотека laravel (имеющая общие библиотеки и файлы поставщиков, а также общие функции, используемые различными проектами)
приложение / контроллеры
приложение / модели
приложение / просмотров
продавец
начальная загрузка
Proj1 (имеющий собственные сущности и способный использовать общие библиотеки и функции модели из общей структуры laravel)
приложение / контроллеры
приложение / модели
приложение / просмотров
начальная загрузка
Proj2 (имеющий собственные сущности и способный использовать общие библиотеки и функции модели из общей структуры laravel)
приложение / контроллеры
приложение / модели
приложение / просмотров
начальная загрузка
т.е. Новый проект должен иметь свой собственный каталог приложений и может использовать функции модели из общего проекта.
Это облегчит мою задачу и будет очень полезно для моих предстоящих проектов. Если кто-то 1 может помочь мне с этим, я действительно ценю.
Создайте записи автозагрузки PSR-4 для разделения файлов проектов по пространству имен:
"psr-4": { "App\\Core\\": "app/App/Core", "App\\Main\\": "app/App/Main", "App\\Project1\\": "app/App/Project1", "App\\Project2\\": "app/App/Project2" },
Все, что вы использовали в Core, все, что не принято в связанных файлах проекта.
Теперь вам просто нужно создать свои файлы в их соответствующих папках и их пространства имен:
Это BaseController in Core, используемый всеми вашими контроллерами:
<?php namespace App\Core\Controllers; use Controller; // This is the Laravel Controller class BaseController extends Controller { }
Это базовый контроллер основного приложения с использованием вашего основного контроллера:
<?php namespace App\Main\Controllers; use App\Core\Controllers\BaseController as CoreBaseController; class BaseController extends CoreBaseController { }
И это HomeController основного приложения, используя ваш базовый контроллер, поскольку они находятся в том же пространстве имен, что вам даже не нужно импортировать файл:
<?php namespace App\Main\Controllers; class HomeController extends BaseController { }
Каждый отдельный файл класса в Laravel может быть организован таким образом, даже ваши представления, поэтому вы можете иметь эти файлы:
app/App/Core/Controllers/BaseController.php app/App/Main/Controllers/BaseController.php app/App/Main/Controllers/HomeController.php app/App/Project1/Controllers/BaseController.php app/App/Project1/Controllers/PostsController.php app/App/Project1/Controllers/UsersController.php app/App/Project1/Models/User.php app/App/Project1/Models/Post.php app/App/Project1/Models/Roles.php
Затем ваши маршруты могут быть разделены (организованы) и префикс пространства имен:
Route::group(['prefix' => 'project1', 'namespace' => 'App\Project1\Controllers'], function() { Route::get('/', 'HomeController@index'); Route::get('posts', 'PostsController@index']); });
Предоставление этих URL:
http://yourdomain.com/project1 http://yourdomain.com/project1/posts
И указывая действия на действия контроллера:
App\Project1\Controllers\HomeController@index App\Project1\Controllers\PostsController@index
На этот вопрос не на что ответить, но в общих чертах то, что вы хотите сделать, очень возможно.
Вы можете создать каталог в папке приложений для каждого проекта и пространства имен каждого из классов в структуре, которую вы создаете под ней. Затем вы использовали автозагрузку PSR (в идеале PSR-4), чтобы сделать эти классы доступными.
Вы отправляете маршруты для каждого проекта в свой собственный файл маршрутов, а затем включаете их через файл основных маршрутов или можете создать поставщика услуг для каждого проекта, добавить его в файл конфигурации приложения и использовать его для загрузки маршрутов для этого проект.
ОДНАКО, все, что сказал, это не то, что я сделал бы. Вы не сказали, почему вы хотите структурировать свои проекты таким образом, поэтому у вас может быть совершенно веская причина, но лично я предпочитаю размещать общие библиотеки в своих собственных пакетах (помогает обеспечить четкие границы и очистить apis) и использовать Composer для потяните их в каждый проект.