هل يمكنني إعداد الطرق في Kohana لمطابقة طرق HTTP معينة فقط (الحصول على / النشر / إلخ)

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

  •  13-09-2019
  •  | 
  •  

سؤال

أنا أستكشف عدد قليل من أطر PHP والعداء الأمامي الحالي هو كوهانا.

وجود خلفية القضبان التي استخدمتها إلى ما يسميه مجتمع القضبان طرق "مريح". لذلك يعرض "الحصول على / مشاركات" جميع المشاركات ويتم التعامل معها بواسطة طريقة الفهرس لوحدة تحكم المشاركات. ينشئ "Post / Post / Mosts" كائنا آخر منشور جديد ويتم التعامل معه بواسطة طريقة مختلفة لمراقب الوظائف.

نظرا لأن المسار في كل من هذه الطلبات 2 متطابقة، يحتاج جهاز التوجيه إلى اتخاذ القرارات بناء على طريقة HTTP.

هل جهاز التوجيه في كوهانا قادر على القيام بذلك؟

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

المحلول

Kohana لا يدعم طرق مريحة بشكل افتراضي، ولكن هناك مريح الوحدة النمطية التي تضيف الدعم لذلك. انظر مريح ويكي للاستخدام.

يدعم Kohana V3.x وحدات التحكم الرهيبة مباشرة. فقط تمديد Controller_REST بدلاً من Controller وكل إجراءات الطريق سيكون طريقة الطلب. (أ POST سيتم استهداف الطلب action_post, ، إلخ.)

نصائح أخرى

يمكنك أيضا إضافة هذه الأسطر إلى طريقة التحكم الخاصة بك قبل ():

if ($this->request->method() == "POST")
{
  $this->request->action("post_".$this->request->action());
}

سيتم التعامل مع "الحصول على / تحكم / مشاركات" بواسطة أسلوب Action_Posts () في وحدة التحكم الخاصة بك، في حين سيتم معالجة Post / Controld / المشاركات بواسطة طريقة Action_Post_Posts ().

ملاحظة: تمت إزالة التحكم المدمج في Controller_Rest في Kohana 3.2

التحقق من طريقة HTTP في منشئ الفصل يشعر وكأنه تصميم ضعيف لي. مثل القضبان، يمكن Kohana 3.3 إنشاء طرق مريحة في جهاز التوجيه (حيث ينتمون).

تحقق من الوثائق ل كوهانا 3.3 فلاتر الطريق.

إليك مثال:

Route::set('Posts', 'posts/<id>', array('id' => '\d+'))
  ->filter(function($route, $params, $request) {
    $params['action'] = strtolower($request->method());
    return $params;
  })
  ->defaults(array(
    'controller' => 'Post',
  ));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top