سؤال

باستخدام Zend Framework وطريقة url للعرض:

$this->url(array('field1' => this, 'field2' => 'is', 'field3' => 'my example'), 'route_name');

حيث Route_name هو اسم مسار URL ويتم استرداد كل حقل # من قاعدة البيانات.

لقد لاحظت أنه بشكل افتراضي يقوم بتغيير المسافات في أسماء وحدة التحكم/الإجراء إلى علامة الجمع بحيث يبدو كما يلي:

www.example.com/this is my example

ل

www.example.com/this+is+my+example

أرغب في تغيير الفاصل من + إلى - للحصول على شيء من هذا القبيل

www.example.com/this-is-my-example

وأعلم أن هناك موضوع آخر: كيفية تغيير حرف الفصل لـ Zend Url؟كما وثقت طريقة للقيام بذلك والتي حاولت دون جدوى.

شرح شامل لكيفية القيام بذلك سيكون موضع تقدير كبير.

تحرير 2:أعرف أين تكمن المشكلة، إذا كان أي شخص مهتمًا، فهي تأتي من الطريقة التي يتم بها تجميع عنوان url، فهو يستخدم urlencode الذي يحول جميع الأحرف غير الأبجدية الرقمية المتوقعة - و_ والمسافات كـ +، ولا توجد طريقة لتجاوز ذلك بدلاً من الاستبدال يقوم الحرف بإنشاء عنوان url يدويًا (كما اقترح Maxime) أو إنشاء وظيفة عنوان url مخصصة لتحل محل الأحرف (كما يقترح aporat)...

شكرًا!

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

المحلول

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

giveacodicetagpre.

ثم قم فقط بتحميل مساعد العرض الجديد وأنت جيد للذهاب:

giveacodicetagpre.

نصائح أخرى

لسوء الحظ، لا يمكنك ضبط أي شيء قبل الاتصال بالرقم url(...) وظيفة لتحقيق ما تريد القيام به.والسبب هو أنه عند تجميع عنوان URL، فإنه يستخدم ملف php urlencode(...) وظيفة.

ومع ذلك، لا يزال أمامك العديد من الخيارات:

1) أنت ببساطة لا تستخدم url(...) وظيفة وإنشاء عناوين URL الخاصة بك يدويًا.(الخيار الأفضل)

2) يمكنك إنشاء مساعد جديد يتصرف مثل url(...) ولكن أضف تغييرات إضافية إلى الوظيفة لتحقيق ما تريد القيام به.

3) تأخذ إخراج وظيفة url(...) وتقوم بـ str_replace للتغيير + مع -.(لا أوصي بهذا الخيار)

أنا شخصياً أقوم بإنشاء جميع عناوين URL الخاصة بي يدويًا لتجنب هذا النوع من المشكلات.

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