Bene, iniziamo ...
In primo luogo, ho creato Andreyco\Cart
pacchetto usando Artisan.
Package e la sua struttura
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------lang
|-------migrations
|-------views
|-----tests
|-----vendor
Nelle risposte, userò questo pacchetto esatto come esempio.
Immaginate che quella cartella workbench/andreyco/cart/src
sia la cartella dell'applicazione. Se lo fai, dovresti sapere la maggior parte delle risposte. (In realtà App è pacchetto così)
D:come impostare percorsi
A: Creare il file ->workbench/andreyco/cart/src/routes.php
. Questo è fatto.
D:dove mettere i controller e modelli
A: Basta creare controllers
e models
cartella lì.
Quindi il TestController
si troverà nel file workbench/andreyco/cart/src/controllers/TestController.php
. Lo stesso con i modelli.
Directory albero sarebbe simile a questa
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------controlers
|-------lang
|-------migrations
|-------models
|-------views
|-----tests
|-----vendor
ho creato il routes.php
, TestController.php
e il TestModel.php
// workbench/andreyco/cart/src/routes.php
<?php
Route::get('test', 'Andreyco\\Cart\\Controllers\\[email protected]');
// 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}";
}
}
Come potete vedere, ho usato gli spazi dei nomi, così si dovrebbe.
Gli spazi dei nomi rendono la vita molto più semplice.
Importante: dopo la creazione di questi file, è necessario aggiornare composer.json
file, in modo che le classi potrebbero essere autocaricate
// composer.json
"autoload": {
"classmap": [
...
"workbench/andreyco/cart/src/controllers",
"workbench/andreyco/cart/src/models"
]
},
Dopo questo, eseguire il dump dei cambiamenti usando composer dump-autoload -o
comando.
Q:Quindi, qual è l'approccio che dovrei seguire per mantenere le cose in modo laravel?
A: A mio parere, è necessario attenersi ai pacchetti. Almeno, lo farei. Questo è il modo in cui Laravel è stato progettato per funzionare.
Spero che questo ti aiuti, buona fortuna!
Modifica
Le viste non sono un problema qui. Funzionano proprio come nel pacchetto principale dell'app.
// workbench/cart/src/view/foldername/viewname.blade.php
<h1>Testing view file.</h1>
{{ "Blade" }} syntax is parsed as well, no problem here.
Tornando vista dal controllore di pacchetto è piuttosto semplice
public function index()
{
return \View::make('cart::foldername.viewname');
}
Grazie si Andrej. E 'stato davvero d'aiuto! Quindi, i percorsi devono essere assegnati a un nome, ma perché il doppio taglio? – Luciano
La doppia barra rovesciata è usata per uscire dal carattere '\'. Qualcuno mi corregge, se sbaglio. Laravel lo traduce correttamente nello spazio dei nomi – Andreyco
Apparentemente ho dimenticato di sfuggire al carattere '\' nel commento precedente. – Andreyco