سؤال

إنها أول مشاركة لي هنا :)

أواجه بعض الصعوبات في التعامل مع عناوين URL والمعلمات. لقد مررت من خلال وثائق واجهة برمجة تطبيقات فئة جهاز التوجيه مرارًا وتكرارًا ولم أجد شيئًا مفيدًا.

بادئ ذي بدء ، أود أن أعرف ما إذا كان هناك أي تنسيق "عالمي" في CakePhP (1.3) لمعالجة عناوين URL. أنا أتعامل حاليًا مع جميع عناوين URL الخاصة بي كصفائف بسيطة (بالتنسيق الذي يقبله Router :: url و $ HTML-> ، وهو أمر سهل طالما أحتاج فقط إلى تمريرها كوسيطات إلى أساليب Cake. عادة ما يصبح الأمر صعبًا إذا كنت بحاجة إلى شيء آخر.

في الأساس ، أواجه مشاكل في تحويل عناوين URL للسلسلة إلى تنسيق الصفيف الأساسي. دعنا نقول أنني أريد تحويل $ arrayurl إلى سلسلة ومرض مرة أخرى إلى عنوان URL:

$arrayUrl=array('controller'=>'SomeController','action'=>'someAction','someValue');
$url=Router::url($arrayUrl);       //$url is now '/path/to/site/someController/someAction/someValue'
$url=Router::normalize($url);      //remove '/path/to/site'
$parsed=Router::parse($url);       /*$parsed is now
Array(
    [controller] => someController
    [action] => someAction
    [named] => Array()
    [pass] => Array([0] => someValue)
    [plugin] => 
) */

يبدو أن هذا الأمر فظيعًا من التعليمات البرمجية للقيام بشيء بسيط مثل التحويل بين التنسيقين الأساسيين. أيضًا ، لاحظ أن $ RALSED لا يزال في نفس $ arrayurl. بالطبع ، يمكنني تعديل $ الذي تم تحليله يدويًا ، وفي الواقع قمت بذلك عدة مرات كرقعة سريعة ولكني أود الوصول إلى أسفل هذا.

لاحظت أيضًا أنه عند استخدام توجيه البادئة ، فإن $ this-> params في وحدة التحكم لديها البادئة المضمنة في الإجراء (أي [Action] => 'admin_edit') ونتيجة جهاز التوجيه :: parse () لا. كلاهما بالطبع لديه البادئة في مفتاحها.

لتلخيص ، كيف يمكنني تحويل عنوان URL بين أي من هؤلاء 3 (أو 4 ، إذا قمت بتضمين شيء البادئة) ، فإن التنسيقات المذكورة بالطريقة الصحيحة؟ بالطبع سيكون من السهل اختراق طريقي من خلال هذا ، لكنني ما زلت أرغب في تصديق أن الكعكة يتم تطويرها من قبل مجموعة من الأشخاص الذين لديهم خبرة أكبر بكثير مني ، لذلك أعتقد أن هناك جيدًا سبب هذا "سوء السلوك المتصور".

لقد حاولت تقديم مشكلتي قدر الإمكان ، ولكن بسبب مهاراتي في اللغة الإنجليزية الصدئة ، كان عليّ أن آخذ بعض الالتفافات :) سأشرح المزيد إذا لزم الأمر.

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

المحلول

يجب أن يكون التنسيق "الرسمي" لعناوين URL Cake هو تدوين الصفيف array('controller' => 'foo', 'action' => 'bar', 'baz', 'admin' => true). كلما كتبت عناوين URL ، يجب عليك استخدام هذا التنسيق. سوف يترجم فئة جهاز التوجيه تلك إلى أي من الأوتار (/admin/foo/bar/baz) أو المعلومات اللازمة للمرسل (array('named' => array(), 'pass' => array(), …)) ، اعتمادا على مكان استخدام عنوان URL.

يجب أن تفكر في الأمر من حيث إجراء وحدة التحكم التي تريد استدعاءها. عناوين URL (كقواسل) ليست سوى شر ضروري لإنجاز هذا في سياق الويب. لا ينبغي أن تكون هناك أي حاجة لك لاستخدام تنسيق المرسل. يجب أيضًا عدم استخدام تدوين السلسلة عند تحديد عناوين URL ، حيث لا يمكن أن يتم توجيهها إلى عكس إذا كنت ترغب في تغيير مخطط عنوان URL الخاص بك.

ربما يمكنك أن تشرح بمثال لماذا تحتاج إلى تحويل هذه النماذج الثلاثة من واحدة إلى أخرى؟

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