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

السؤال

نشر

أحاول إظهار رسائل خطأ للمستخدم عند إدخال قيم باستخدام التحقق 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...