درود دوستان...
چند هفته ای هست که درگیر پیاده کرده مسیر روت لاراول در پروژه ماژولار هستم.
توی اینترنت به جوابی نرسیدم.
مشکلی که داره من بخش ورود / عضویت Auth لاراول به پوشه ماژولار Modules منتقل کردم از کنترلر بگیر تا دیتابیس و غیره ...
همه این پوشه و فایل ها به Modules منتقل کردم.
توی کنترلر و روت مسیر آن مشخص کردم اما خطا هایی دریافت می کنم.
کد های زیر:
کنترلر:
<?php
namespace RaymondTomcat\User\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller
{
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function credentials(Request $request)
{
$username = $request->get($this->username());
$field = filter_var($username, FILTER_VALIDATE_EMAIL) ? 'email' : 'mobile';
return [
$field => $username,
'password' => $request->password
];
}
public function showLoginForm()
{
return view('User::Front.login');
}
}
روت :
Route::group([
'namespace' => 'RaymondTomcat\User\Http\Controllers',
'middleware' => 'web'
], function ($router) {
// login
Route::get('/login', RaymondTomcat\User\Http\Controllers\Auth\LoginController::class)->name('login');
Route::post('/login', RaymondTomcat\User\Http\Controllers\Auth\LoginController::class)->name('login');
});
RouteServiceProvider :
protected $namespace = 'RaymondTomcat\User\Http\Controllers';
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::middleware('api')
->namespace($this->namespace)
->prefix('api')
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
عکس زیر:
خطای زیر:
راه حلش چیه؟
بین خودمون باشه من جواب سوالت رو نمیدونم
ولی برای تعریف روت
Route::get('/login', RaymondTomcat\\User\\Http\\Controllers\\Auth\\LoginController::class)->name('login');
Route::post('/login', RaymondTomcat\\User\\Http\\Controllers\\Auth\\LoginController::class)->name('login');
اگر هر دوتا روتت یه اسم داشت و یکیش post بود و یکی get لازم نیستش post رو اصلا اسم براش بزاری در واقع
Route::get('/login', RaymondTomcat\\User\\Http\\Controllers\\Auth\\LoginController::class)->name('login');
Route::post('/login', RaymondTomcat\\User\\Http\\Controllers\\Auth\\LoginController::class);
کارت با همین هم راه میفته.
توی سرویس پروایدر اینو بزن
$src = dirname(__DIR__,1);
$this->loadRoutesFrom($src.'/routes/web.php');
خط اول یه مسیر به عقب میره خط دوم روت هارو لود میکنه
سلام خسته نباشید
زمانی که بخوایم به صورت مستفیم با استفاده از use بیایم کنترلر پاس ندیم و رشته ای نباشه شما اصلا نیاز به Namespace نداری،
همینطور شما اومدی هم توی service provider و روت Namespace تعریف کردی و باز هم اشتباه بوده
از این الگو بگیر https://github.com/milwad-dev/shopline
به شکل زیر میتونی تو RouteServiceProvider مسیرهای ماژول رو رجیستر کنی (فقط قبل از مپ شدن مسیرهای اصلی باشه
if (Module::collections()->has('ModuleName'))
(new \Modules\ModuleName\Providers\RouteServiceProvider($this->app))->map();
$this->mapApiRoutes();
$this->mapWebRoutes();
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟