راکت
حل شده

تعریف مسیر Routes در پروژه ماژولار لاراول

7 پاسخ

درود دوستان...
چند هفته ای هست که درگیر پیاده کرده مسیر روت لاراول در پروژه ماژولار هستم.
توی اینترنت به جوابی نرسیدم.
مشکلی که داره من بخش ورود / عضویت 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'));
        });
    }

عکس زیر:
 تصویر

خطای زیر:
۱

راه حلش چیه؟

ثبت پرسش جدید

پاسخ‌ها

7
رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

بهترین پاسخ

درود دوستان ..
با حذف

Auth::routes();

در مسیر web.php این خطا رفع شد.

محمدرضا افخمی
محمدرضا افخمی
@mhmdrezafk

تخصص: Laravel Backend Developer

سلام
تو Route service provider خودتون route ها رو map کردید؟

رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

@mhmdrezafk
درود خوبی...
توی آموزش ویدیویی چنین چیزی گفته نشده است!

شاید پاسخ شما همین‌جا باشد

عرفان
عرفان
@erfanwmb

تخصص: هیچ

بین خودمون باشه من جواب سوالت رو نمیدونم
ولی برای تعریف روت

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

کارت با همین هم راه میفته.

Armia Armia
Armia Armia
@armiaevil

توی سرویس پروایدر اینو بزن

$src = dirname(__DIR__,1);
        $this->loadRoutesFrom($src.'/routes/web.php');

خط اول یه مسیر به عقب میره خط دوم روت هارو لود میکنه

میلاد خسروی
میلاد خسروی
@milwad

تخصص: برنامه نویس بامزه

سلام خسته نباشید
زمانی که بخوایم به صورت مستفیم با استفاده از use بیایم کنترلر پاس ندیم و رشته ای نباشه شما اصلا نیاز به Namespace نداری،
همینطور شما اومدی هم توی service provider و روت Namespace تعریف کردی و باز هم اشتباه بوده
از این الگو بگیر https://github.com/milwad-dev/shopline

محمدرضا افخمی
محمدرضا افخمی
@mhmdrezafk

تخصص: Laravel Backend Developer

به شکل زیر میتونی تو RouteServiceProvider مسیرهای ماژول رو رجیستر کنی (فقط قبل از مپ شدن مسیرهای اصلی باشه

if (Module::collections()->has('ModuleName'))
            (new \Modules\ModuleName\Providers\RouteServiceProvider($this->app))->map();

        $this->mapApiRoutes();
        $this->mapWebRoutes();

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام