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

خطأ Unable to prepare route [api/user] for serialization. Uses Closure. في لارافيل Laravel

السؤال

لما احاول القيام ب 

php artisan route:cache 

يظهر لي الخطأ التالي 

C:\laragon\www\bookstore                                                                                                   
λ php artisan route:cache                                                                                                  
Route cache cleared!                                                                                                       
                                                                                                                           
   LogicException                                                                                                          
                                                                                                                           
  Unable to prepare route [api/user] for serialization. Uses Closure.                                                      
                                                                                                                           
  at C:\laragon\www\bookstore\vendor\laravel\framework\src\Illuminate\Routing\Route.php:1150                               
    1146|      */                                                                                                          
    1147|     public function prepareForSerialization()                                                                    
    1148|     {                                                                                                            
    1149|         if ($this->action['uses'] instanceof Closure) {                                                          
  > 1150|             throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure."); 
    1151|         }                                                                                                        
    1152|                                                                                                                  
    1153|         $this->compileRoute();                                                                                   
    1154|                                                                                                                  
                                                                                                                           
  1   C:\laragon\www\bookstore\vendor\laravel\framework\src\Illuminate\Foundation\Console\RouteCacheCommand.php:62         
      Illuminate\Routing\Route::prepareForSerialization()                                                                  
                                                                                                                           
  2   C:\laragon\www\bookstore\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:36                        
      Illuminate\Foundation\Console\RouteCacheCommand::handle()                                                            
                                                                                                                           
C:\laragon\www\bookstore                                                                                                   
λ                                                                                                                          
                                                                                                                           
                                                                                                                           
                                                                                                                                                                                                                                
                                                                                                                           

عمليا لايوجد أي خطأ في الموقع تقريبا إلا أنني عند قمت بتغيير إسم بعض  الروابط لأحد المتحكمات 

Route::get('/technologies/{author}', 'AuthorController@result')->name('authors.books.result');
            ^^^^^^^^^^^^^
         //قمت بتغيير هذا
   Route::get('/technologies/searsh', 'AuthorController@searsh')->name('authors.searsh');
               ^^^^^^^^^^^^^
            //قمت بتغيير هذا
Route::get('/technologies/list', 'AuthorController@list')->name('authors.list');
            ^^^^^^^^^^^^^
        //قمت بتغيير هذا

تكون النتيجة 404 قلت أعمل كلير للراوت لم استطع

ملفات المشروع :bookstore.rar

شكرا

 

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

Recommended Posts

  • 1

الخطأ الذي يظهر لك عند تنفيذ الأمر route:cache يحدث بسبب الكود الموجود في الملف routes\api.php وذلك لأن لارافيل لا يمكنه أن يقوم بعمل cache للمسارات routes إن كان أحد المسارات يحتوي على كود مباشر في داخل function وليس مسار لتابع في متحكم controller، وإذا قمت بإزالة الكود الموجود في الملف routes\api.php، بالشكل التالي:

// Route::middleware('auth:api')->get('/user', function (Request $request) {
//     return $request->user();
// });

ثم قمت بتنفيذ الأمر التالي مرة أخرى:

php artisan route:cache

فستجد أنه يعمل بدون مشكلة.

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

  • 0
بتاريخ 2 دقائق مضت قال Brahim Semmani:

نعم , تم الامر لكن لماذا عندما ازور الرابط الذي غيرته  لازال يعطيني 

404

Not Found

 

لاحظ أن ترتيب المسارات به مشكلة، حيث أنه دائمًا سيتم تنفيذ المسار التالي:

// هذا المسار هو الذي سيتم تنفيذه
Route::get('/technologies/{author}', 'AuthorController@result')->name('authors.books.result');

// لن يتم تنفيذ المسارات التالية
Route::get('/technologies/searsh', 'AuthorController@searsh')->name('authors.searsh');
Route::get('/technologies/list', 'AuthorController@list')->name('authors.list');

المسار الثاني والثالث لن يتم تنفيذهم، حيث سيتم إعتبار كلمة search أو list عبارة عن المعامل author قي المسار السابق، وعليك أن تقوم بعكس ترتيبهم ليصبح بالشكل التالي:

Route::get('/technologies/searsh', 'AuthorController@searsh')->name('authors.searsh');
Route::get('/technologies/list', 'AuthorController@list')->name('authors.list');
Route::get('/technologies/{author}', 'AuthorController@result')->name('authors.books.result');

بعد ذلك قم بتنفيذ الأمر التالي:

php artisan route:clear

ثم قم بتشغيل المشروع مرة أخرى.

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

  • 0

لا يمكنك تنفيذ هذا الأمر على Routes تحتوي على closure function ، أمامك حل وهو تنفيذ هذا الأمر 

php artisan route:list 

سيعرض لك كل ال routes في موقعك ، وعندها ستجد أي ال Routes تحتوي على closure function ، وقم بتغيرها الى Controller وبهذا ستحل المشكلة 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...