هل هناك طريقة عامة لعناوين المواقع الطريق في Kohana عندما يكون هناك حرف واصلة في نفوسهم؟
سؤال
وKohana يحدد تلقائيا عناوين مثل ذلك
http://www.example.com/controller/method/argument1 / argument2 / الخ
والآن أود أن استخدام شرطة لفصل كلماتي في URL، ولدي عنوان مثل ذلك
http://www.example.com/business-hub
ويحمل عنوان تحكم بلدي BusinessHub_Controller. ما هو مزعج لي، هو ل/ الأعمال محور / لتتناسب مع وحدة تحكم BusinesHub، ولست بحاجة لإضافة إدخال مخصصة في routes.php تحت مجلد التطبيق / التكوين. ويبدو أيضا لا بد لي من إضافة واحدة ل <م> كل م> الأسلوب، وهو أمر مزعج حقا. على سبيل المثال، وهنا مقتطف،
$config['business-hub'] = 'businesshub/index/';
$config['business-hub/logout'] = 'businesshub/logout';
$config['business-hub/media-releases'] = 'businesshub/mediareleases';
ومن الواضح أن هذا أمر مزعج حقا. هل هناك أي حال استطيع ان اقول Kohana لتحويل URL إلى اسم camelCase، شيء من هذا القبيل
$urlController = 'business-hub';
$correctController = str_replace('-', ' ', $urlController);
$correctController = ucwords($correctController);
$correctController = str_replace(' ', null, $correctController);
$correctController = $correctController . '_Controller';
المحلول
وبدلا من مجرد تجريد من شرطات، فما استقاموا لكم فاستقيموا تحويلها إلى أحرف (_). وأنا سوف نفعل ذلك باستخدام هوك. تأكد من تمكين السنانير في التكوين / ملف config.php ثم قم بإنشاء ملف في السنانير ودعا، مثلا، dashes_to_underscores.php:
function convert_dashes_to_underscores_in_url()
{
Router::$current_uri = str_replace('-', '_', Router::$current_uri);
}
Event::add_before(
'system.routing',
array('Router', 'setup'),
'convert_dashes_to_underscores_in_url');
نصائح أخرى
لوcamelCase البديل وأنا لا أعرف ولكن شيئا من هذا القبيل يجب أن تعمل
$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';
وأما الجزء الطريق في kohana هو تعبير عادي.
وبالطبع هذا غير محدود بالقسوة على الحالات التي تقدمها لك.