Routing podfolderu kontrolera Laravel
Jestem nowy w Laravel. Aby spróbować utrzymać porządek w aplikacji, chciałbym umieścić Kontrolery w podfolderach folderu kontroler.
controllers\
---- folder1
---- folder2
Próbowałem dotrzeć do kontrolera, ale laravel go nie znalazł.
Route::get('/product/dashboard', 'folder1.MakeDashboardController@showDashboard');
Co robię źle? 11 answers
Dla Laravel 5.3 powyżej
php artisan make:controller test/TestController
To utworzy folder testowy, jeśli nie istnieje, a następnie utworzy TestController
wewnątrz.
TestController
będzie wyglądać tak:
<?php
namespace App\Http\Controllers\test;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class TestController extends Controller
{
public function getTest()
{
return "Yes";
}
}
?>
W trasach,
Route::get('/test','test\TestController@getTest');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 13:56:18
Dodaj swoje Kontrolery do folderów:
controllers\
---- folder1
---- folder2
Utwórz trasę bez podania folderu:
Route::get('/product/dashboard', 'MakeDashboardController@showDashboard');
Run
composer dump-autoload
I spróbuj ponownie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-17 13:07:26
Dla tych, którzy używają Laravel 5, musisz ustawić przestrzeń nazw dla kontrolera w podkatalogu (Laravel 5 jest nadal w fazie rozwoju i zmiany zachodzą codziennie)
Aby uzyskać strukturę folderów jak:
Http
----Controllers
----Admin
PostsController.php
PostsController.php
Przestrzeń Nazw Admin\PostsController.plik php jak tak:
<?php namespace App\Http\Controller\Admin;
use App\Http\Controllers\Controller;
class PostsController extends Controller {
//business logic here
}
Wtedy Twoja trasa to:
$router->get('/', 'Admin\PostsController@index');
I na koniec, nie rób ani kompozytora, ani rzemieślnika zrzutu
composer dump-autoload
Lub
php artisan dump
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-15 07:23:15
1.utwórz swój podfolder tak jak w następującej treści:
app
----controllers
--------admin
--------home
2.skonfiguruj kod w aplikacji / trasach.php
<?php
// index
Route::get('/', 'Home\HomeController@index');
// admin/test
Route::group(
array('prefix' => 'admin'),
function() {
Route::get('test', 'Admin\IndexController@index');
}
);
?>
3.Zapisz sth w app / controllers/admin / IndexController.php, np:
<?php
namespace Admin;
class IndexController extends \BaseController {
public function index()
{
return "admin.home";
}
}
?>
4.dostęp do witryny, np: localhost / admin / test zobaczysz "admin.Strona główna " na stronie
Ps: Proszę ignoruj mój biedny angielski
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-26 07:12:59
Dla * * Laravel 5 lub Laravel 5.1 LTS oba**, jeśli masz wiele kontrolerów w folderze Admin, Route::group
będzie bardzo pomocny dla Ciebie. Na przykład:
Moja struktura folderów:
Http
----Controllers
----Api
----V1
PostsApiController.php
CommentsApiController.php
PostsController.php
PostAPIController:
<?php namespace App\Http\Controllers\Api\V1;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PostApiController extends Controller {
...
Na Mojej Drodze.php, ustawiłem namespace
group na Api\V1
i ogólnie wygląda to tak:
Route::group(
[
'namespace' => 'Api\V1',
'prefix' => 'v1',
], function(){
Route::get('posts', ['uses'=>'PostsApiController@index']);
Route::get('posts/{id}', ['uses'=>'PostssAPIController@show']);
});
Aby uzyskać szczegóły dotyczące przeniesienia, aby utworzyć podfolder, odwiedź poniżej link: https://laracasts.com/discuss/channels/general-discussion/reflectionexception-class-apphttpcontrollersadminadmincontroller-does-not-exist
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-15 06:55:49
php artisan make:controller admin/CategoryController
Tutaj admin jest podkatalogiem pod app / Http / Controllers i CategoryController jest kontrolerem, który chcesz utworzyć wewnątrz katalogu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-08 02:01:24
Just found a way how to do it:
Wystarczy dodać ścieżki do /app / start / global.php
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/controllers/product',
app_path().'/models',
app_path().'/database/seeds',
));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-17 13:19:18
Używam Laravel 4.2. Oto jak to robię:
Mam taką strukturę katalogów jak Ta:
app
-- Kontrolery
---- admin
------ AdminController.php
Po stworzeniu kontrolera umieściłem w composerze.json ścieżka do nowego katalogu admina:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/controllers/admin",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
Następny biegnę
composer dump-autoload
A następnie
php artisan dump-autoload
Następnie w trasach.php mam w zestawie kontroler Tak:
Route::controller('admin', 'AdminController');
I wszystko działa dobrze.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-07 12:49:48
Jeśli używasz Laravel 5.3 lub nowszego, nie ma potrzeby, aby wchodzić w tak wiele złożoności, jak inne odpowiedzi powiedziały.
Wystarczy użyć domyślnego polecenia artisan, aby wygenerować nowy kontroler.
Na przykład, jeśli chcę utworzyć kontroler User
w folderze User
.
Ja bym napisał
php artisan make:controller User/User
W trasach,
Route::get('/dashboard', 'User\User@dashboard');
Robienie tego byłoby w porządku, a teraz na localhost/dashboard znajduje się strona.
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-24 02:25:40
W Laravel 5.6, zakładając, że nazwa Twojego podfolderu ' to Api
:
W kontrolerze potrzebujesz tych dwóch linii:
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
I w pliku trasy api.php
Potrzebujesz:
Route::resource('/myapi', 'Api\MyController');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 13:13:52
Myślę, że aby utrzymać kontrolery dla admina i Front w oddzielnych folderach, przestrzeń nazw będzie działać dobrze.
Proszę spojrzeć na poniższą strukturę katalogów Laravel, która działa dobrze dla mnie.
app
--Http
----Controllers
------Admin
--------DashboardController.php
------Front
--------HomeController.php
Trasy w "routes / web.php " plik będzie jak poniżej
/* All the Front-end controllers routes will work under Front namespace */
Route::group(['namespace' => 'Front'], function () {
Route::get('/home', 'HomeController@index');
});
A Dla sekcji Admin będzie to wyglądało tak:
/* All the admin routes will go under Admin namespace */
/* All the admin routes will required authentication,
so an middleware auth also applied in admin namespace */
Route::group(['namespace' => 'Admin'], function () {
Route::group(['middleware' => ['auth']], function() {
Route::get('/', ['as' => 'home', 'uses' => 'DashboardController@index']);
});
});
Mam nadzieję, że to pomoże!!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-18 11:03:35