Laravel 4-пакет или "модули"?
Я начинаю работать с Laravel 4, это кажется отличным выбором, во всяком случае, прежде чем кодировать мой первый проект, я хотел бы понять, может ли мой обычный подход быть в порядке с laravel.
обычно я держу триаду для бэкэнда и интерфейса разделенными в папке / modules, например:
/modules
/backend
/config
/controllers
/models
/migrations
/ecc..
/frontend (and so on...)
С laravel я не совсем уверен, как это сделать. Я пытаюсь с пакетами, но php artisan workbench me/mypackage --resources
Не создавайте всю структуру папок... куда поставить контроллеры и модели и как настроить маршруты?
затем я нашел это ссылке включить модули-как системы. Итак, каков подход, которому я должен следовать, чтобы держать вещи в пути laravel?
1 ответов
Ну, давайте начнем...
во-первых, я создал Andreyco\Cart
пакет с использованием Artisan.
Пакет и его структура
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------lang
|-------migrations
|-------views
|-----tests
|-----vendor
в ответах я буду использовать этот точный пакет в качестве примера.
представьте себе, что папка workbench/andreyco/cart/src
- это папка приложения. Если да, то вы должны знать большинство ответов. (На самом деле приложение также является пакетом)
Q: как настроить маршруты
A: Создайте файл -> workbench/andreyco/cart/src/routes.php
. Это сделано.
Q: куда поставить контроллеры и модели
A: просто создать controllers
и models
там папку.
Так что TestController
на . То же самое с моделями.
Дерево каталогов будет выглядеть следующим образом
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------controlers
|-------lang
|-------migrations
|-------models
|-------views
|-----tests
|-----vendor
я создал routes.php
, TestController.php
и TestModel.php
// workbench/andreyco/cart/src/routes.php
<?php
Route::get('test', 'Andreyco\Cart\Controllers\TestController@index');
// workbench/andreyco/cart/src/controllers/TestController.php
<?php namespace Andreyco\Cart\Controllers;
use Andreyco\Cart\Models\TestModel;
class TestController extends \BaseController
{
public function index()
{
return TestModel::printCurrentLocation(__DIR__);
}
}
// workbench/andreyco/cart/src/models/TestModel.php
<?php namespace Andreyco\Cart\Models;
class TestModel extends \Eloquent
{
public static function printCurrentLocation($location)
{
return "Testing package controller, script is located at: {$location}";
}
}
как вы можете видеть, я использовал пространства имен, так что вы должен.
Пространства сделает вашу жизнь намного проще.
важно: после создания этих файлов, вам нужно обновить composer.json
файл, чтобы классы могли быть загружены автоматически
// composer.json
"autoload": {
"classmap": [
...
"workbench/andreyco/cart/src/controllers",
"workbench/andreyco/cart/src/models"
]
},
после этого сбросьте изменения с помощью .
Q: Итак, какой подход я должен следовать для сохранения вещей в ларавеле?
A: на мой взгляд, вы должны придерживаться пакеты. По крайней мере, я. Именно так и должен был работать Ларавел.
я надеюсь, это поможет Вам, удачи!
редактировать
Взгляды здесь не проблема. Они работают так же, как в основном пакете приложения.
// workbench/cart/src/view/foldername/viewname.blade.php
<h1>Testing view file.</h1>
{{ "Blade" }} syntax is parsed as well, no problem here.
возврат вида с контроллера пакета довольно прост
public function index()
{
return \View::make('cart::foldername.viewname');
}