سؤال

أنا دائما أميل إلى نسيان هذه الأشياء المضمنة سيمفوني وظائف لصنع الروابط.

هل كانت مفيدة؟

المحلول

إذا كان هدفك هو الحصول على عناوين URL سهلة الاستخدام في تطبيقك، فاستخدم الطريقة التالية:

1) قم بإنشاء قاعدة توجيه للوحدة/الإجراء الخاص بك في ملف routing.yml الخاص بالتطبيق.المثال التالي هو قاعدة توجيه لإجراء يعرض أحدث الأسئلة في أحد التطبيقات، مع الإعداد الافتراضي للصفحة 1 (باستخدام جهاز النداء):

recent_questions:
   url:    questions/recent/:page
   param:  { module: questions, action: recent, page: 1 }

2) بمجرد تعيين قاعدة التوجيه، استخدم url_for() مساعد في القالب الخاص بك لتنسيق عناوين URL الصادرة.

<a href="<?php echo url_for('questions/recent?page=1') ?>">Recent Questions</a>

في هذا المثال، سيتم إنشاء عنوان URL التالي: http://myapp/questions/recent/1.html.

3) سيتم تحليل عناوين URL الواردة (الطلبات) بواسطة نظام التوجيه، وإذا تم العثور على تطابق نمط في تكوين قاعدة التوجيه، فإن أحرف البدل المسماة (على سبيل المثال.ال :/page جزء من عنوان URL) سيصبح معلمات الطلب.

يمكنك أيضًا استخدام link_to() مساعد لإخراج عنوان URL دون استخدام HTML <a> بطاقة شعار.

نصائح أخرى

هذه النصيحة مخصصة لـ Symfony 1.0.من المحتمل أن تعمل مع الإصدارات الأحدث.

ضمن فئة sfAction الخاصة بك:

سلسلة genUrl($parameters = array(), $absolute = false)

على سبيل المثال.$this->getController()->genUrl('yourmodule/youraction?key=value&key2=value', true);

في قالب:

سيؤدي هذا إلى إنشاء رابط عادي.

سلسلة link_to($name, $internal_uri, $options = array());

على سبيل المثال.link_to('اسم الرابط الخاص بي', 'yourmodule/youraction?key=value&key2=value');

بالإضافة إلى ذلك، إذا كنت تريد بالفعل سلسلة استعلام باستخدام عنوان url هذا، فاستخدم هذا:

link_to('My link name', 'yourmodule/youraction?key=value&key2=value',array('query_string'=>'page=2'));

وإلا، فسوف يحاول توجيهه كجزء من عنوان URL ومن المحتمل أن يعطل الإجراء الذي اتخذته.

يمكنك إنشاء عنوان URL مباشرة دون تحديد القاعدة أولاً.

إذا كنت تريد إنشاء عنوان URL في الإجراءات، فيمكنك استخدامه إنشاءUrl() المساعد:

$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]'))

إذا كنت تريد إنشاء عنوان URL في القوالب، فيمكنك استخدامه url_for() المساعد:

url_for('[ModuleName]/[ActionName]', $absolute)

قم بتعيين $absolute كـ true/false، ولا تنس استخدام echo إذا كنت تريد عرضه.

ولكن إذا كنت ترغب في إجراء وصلة (شيء مثل <a href=""></a>), رابط ل() سوف يفعل المساعد.

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