يقوم link_to() بإنشاء المسار بنجاح، ولكن النقر فوق هذا الارتباط يؤدي إلى 404

StackOverflow https://stackoverflow.com/questions/641083

  •  22-07-2019
  •  | 
  •  

سؤال

لقد قمت بتعيين موقع إلكتروني أعلى.إذا حاولت وانقر على رابط مثل يسجل أحصل على الخطأ التالية:

404 | Not Found | sfError404Exception
Empty module and/or action after parsing the URL 
    "/trevelyan.alumni/register" (/).

يتم إنشاء الروابط باستخدام

<?php 
    print link_to( 'Register', 'register/index' ); 
?>

ولدي وحدة "تسجيل" في apps/frontend/modules/register.

أنا جديد تمامًا في Symfony، وأقدر أي مساعدة!


التوجيه.yml:

# default rules
homepage:
  url:   /
  param: { module: home, action: index }

default_index:
  url:   /:module
  param: { action: index }

default:
  url:   /trevelyan.alumni/:module/:action/*
هل كانت مفيدة؟

المحلول

وأعتقد أن مشكلتك هي أنك تقوم بتشغيل symfony لللخروج من "موقع فرعي" بدلا من مباشرة الخروج من رابط "الجذر" (<لأ href = "http://www.dur.ac.uk /trevelyan.alumni "يختلط =" نوفولو noreferrer "> http://www.dur.ac.uk/trevelyan.alumni بدلا من <لأ href =" http://www.dur.ac.uk/ "يختلط =" noreferrer نوفولو "> http://www.dur.ac.uk/ ). أعتقد أن الحل الأسهل أن يكون لإضافة trevelyan.alumni إلى الجزء الأمامي من كل عناوين المواقع الخاصة بك في routing.yml.

وعلى سبيل المثال، عن طريق default، بدلا من

default:
  url: /:module/:action/*

استخدم

default:
  url: /trevelyan.alumni/:module/:action/*

نصائح أخرى

اقرأ لستيفن أوكسلي، لكن جرب هذا أيضًا:

تأكد من وجود فئة عمل على الأقل في الوحدة النمطية الخاصة بك مع الاسم الصحيح (symfony حساس لحالة الأحرف، وهذا أمر صعب للغاية).

إذا قمت بذلك، فتأكد من أن الإجراء الافتراضي (في ملفات تكوين الوحدة) هو أحد فئات الإجراء في الوحدة النمطية الخاصة بك.

لا تنس مسح ذاكرة التخزين المؤقت في كل مرة تقوم فيها بتغيير ملف التكوين.

وتمكنت من إصلاح هذا عن طريق تحرير الملفات تحكم في symfony لاستخدام المتغيرات $ _SERVER لاختيار وحدة من، إذا لم يتم العثور على واحد.

وفي نهاية الخاص بك routing.yml الملف:

homepage:
  url:   
  param: { module: main, action: index }

default:
  url:   /:module/:action/*

و لا ننسى لمسح ذاكرة التخزين المؤقت فيما بعد؛)

ومجرد ملاحظة سريعة، لتغيير التوجيه (الصورة) نافذة المفعول، يجب عليك تشغيل مسح ذاكرة التخزين المؤقت في symfony:

./symfony clear-cache

ويجب إزالة نقطة من رابط مطابقة لمسار بسبب قواعد التوجيه الافتراضي

وتغيير مسار افتراضي ل:

default:
  url: /trevelyan_alumni/:module/:action/*

ووالتي يجب أن تعمل. لاحظ أن النقطة (.) يتم استبدال _

وأنا رفعت من أن symfony 1،2-1،4، وكان وجود هذه المشكلة. في نهاية المطاف، في الأساس ملفات التكوين تغيرت كل ما يكفي لدرجة أن التوجيه كسر بطريقة أو بأخرى. يمر ملفات التكوين التطبيق والمقارنة / تحديثها ضد القوالب "التطبيق الجديد" وجدت في ليب / بائع / في symfony / ليب / التكوين / التكوين (أو أي وقت مضى حيث كنت حفظ symfony ل) ثابتة هذه المسألة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top