Dobrze, zacznijmy ...
Najpierw stworzyłem Andreyco\Cart
pakiet za pomocą specjalisty.
Pojemniki, to struktura
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------lang
|-------migrations
|-------views
|-----tests
|-----vendor
W odpowiedzi, będę używał dokładnie ten pakiet jako przykład.
Wyobraź sobie, że folder workbench/andreyco/cart/src
jest folderem aplikacji. Jeśli tak, powinieneś znać większość odpowiedzi. (Faktycznie to pakiet aplikacji, jak również)
Q:jak skonfigurować trasy
A: Tworzenie pliku ->workbench/andreyco/cart/src/routes.php
. Zrobione.
Q:gdzie umieścić kontrolery i modele
A: wystarczy utworzyć folder, controllers
i models
tam.
Więc TestController
będzie znajdować się w pliku workbench/andreyco/cart/src/controllers/TestController.php
. To samo dotyczy modeli.
drzewo katalog będzie wyglądać następująco
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------controlers
|-------lang
|-------migrations
|-------models
|-------views
|-----tests
|-----vendor
stworzyłem routes.php
, TestController.php
i 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}";
}
}
Jak widać, użyłem nazw, więc powinieneś.
Przestrzenie nazw ułatwiają życie.
Ważne: po utworzeniu tych plików, trzeba zaktualizować composer.json
plik, tak aby zajęcia mogły być ładowane automatycznie
// composer.json
"autoload": {
"classmap": [
...
"workbench/andreyco/cart/src/controllers",
"workbench/andreyco/cart/src/models"
]
},
Po tym, zrzucić zmiany za pomocą polecenia composer dump-autoload -o
.
P:Więc, w jaki sposób powinienem podążać za utrzymaniem rzeczy w sposób laravel? A: Moim zdaniem powinieneś trzymać się pakietów. Przynajmniej tak. Tak właśnie zaprojektowano Laravel do działania.
Mam nadzieję, że to wam pomoże, powodzenia!
Edytuj
Widoki nie stanowią tu problemu. Działają tak, jak w głównym pakiecie aplikacji.
// workbench/cart/src/view/foldername/viewname.blade.php
<h1>Testing view file.</h1>
{{ "Blade" }} syntax is parsed as well, no problem here.
Wracając widok z kontrolerem pakietu jest całkiem prosta
public function index()
{
return \View::make('cart::foldername.viewname');
}
Dziękujemy Andrej. To było naprawdę pomocne! Tak więc trasy muszą mieć nazwę, ale dlaczego podwójne ukośnik? – Luciano
Podwójny ukośnik odwrotny używany jest do uniknięcia znaku '\ '. Ktoś mnie poprawia, jeśli się mylę. Laravel tłumaczy to na przestrzeń nazw poprawnie – Andreyco
Najwyraźniej zapomniałem uciec przed znakiem '\ 'w poprzednim komentarzu. – Andreyco