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