رایموند
2 سال پیش توسط رایموند مطرح شد
7 پاسخ

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

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

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

خطای زیر:
۱

راه حلش چیه؟


ثبت پرسش جدید
رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 2 سال پیش مطرح شد
0

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

Auth::routes();

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


محمدرضا افخمی
تخصص : Laravel Backend Developer
@mhmdrezafk 2 سال پیش مطرح شد
1

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


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 2 سال پیش آپدیت شد
0

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


عرفان
تخصص : هیچ
@erfanwmb 2 سال پیش آپدیت شد
0

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

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
@armiaevil 2 سال پیش مطرح شد
0

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

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

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


میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 2 سال پیش آپدیت شد
1

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


محمدرضا افخمی
تخصص : Laravel Backend Developer
@mhmdrezafk 2 سال پیش مطرح شد
1

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

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

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

رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 2 سال پیش مطرح شد
0

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

Auth::routes();

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


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

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