اذهب إلى المحتوى
  • 0

رسائل الخطأ Validation لا تظهر في لارافيل

Amir Alsaeed

السؤال

أحاول إظهار رسائل خطأ للمستخدم عند إدخال قيم باستخدام التحقق validation في لارافيل، لقد قمت بإضافة الكود التالي في المتحكم:

public function saveUser(Request $request){
        $this->validate($request,[
            'name' => 'required|max:120',
            'email' => 'required|email|unique:users',
            'phone' => 'required|min:11|numeric',
            ]);

        $user = new User();
        $user->name=  $request->Input(['name']);
        $user->email=  $request->Input(['email']);
        $user->phone=  $request->Input(['phone']);
        $user->save();
       return redirect('success');         
    }

وهذا هو الجزء الخاص برسائل الخطأ:

@if(count($errors) > 0)
    <div class="row">
        <div class="col-md-4 col-md-offset-4 error">
            <ul>
                @foreach($errors->all() as $error)
                    <li>{{$error}}</li>
                @endforeach
            </ul>
        </div>
    </div>
@endif
@if(Session::has('message'))
<div class="row">
    <div class="col-md-4 col-md--offset-4 success">
        {{Session::get('message')}}
    </div>
</div>

@endif

ومسارات التوجيه لدي بهذا الشكل:

Route::group(['middleware' => 'web'], function () {

    Route::get('/', function () {
        return view('index');
    })->name('main');

      Route::post('/saveUser',[
        'uses' => 'AppController@saveUser',
        'as'=>'saveUser',
        ]);
    });

ولكن لا تظهر رسائل الخطأ أبداً. كيف يمكنني حل هذه المشكلة؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يجب إزالة الوسيط web من مسار التوجيه، فلارافيل تقوم تلقائياً بإضافته ضمن app/Providers/RouteServiceProvider.php:

protected function mapWebRoutes(Router $router)
{
    $router->group([
        'namespace' => $this->namespace, 'middleware' => 'web',
    ], function ($router) {
        require app_path('Http/routes.php');
    });
}

أما إذا قمنا بشكل يدوي بإضافته فسيسبب مشاكل. ولإرسال الخطأ بعد التحقق يمكن عن طريق Redirect::back()->withErrors وإضافة الكود التالي في المتحكم لديك ليصبح:

$validator  =   Validator::make($request->all(), [
     'fname'     =>  'required|max:20|min:4',
     'uemail'    =>  'required|email',
     'message'   =>  'required',
 ]);                                                                                                                                                                                                                               
if ($validator->fails()) {
       $messages = $validator->messages();
       return Redirect::back()->withErrors($messages)->withInput($request->all()); 
 }      

ثم في صفحة blade يمكن استقبال أي خطأ كالتالي:

 @if ($errors->any())
   <label for="fname" class="error">{{ $errors->first('fname') }}</label> 
 @endif

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...