कोहना में मीडिया फ़ाइल नियंत्रक

नमस्ते!

यह लेख शुरुआती लोगों के लिए उपयोगी होने की अधिक संभावना होगी, लेकिन फ्रेमवर्क पर व्यापक प्रलेखन की कमी को देखते हुए, उनमें से कई हैं, और इसलिए मैंने इसे वैसे भी प्रकाशित करने का निर्णय लिया।

इस लेख को लिखने के लिए, मुझे कोहना पर मीडिया फ़ाइलों के साथ काम करने से जुड़े कई सवाल और को 3 पर कई सोर्स कोड ऑफ़ कोड्स में कोड के कुछ प्रश्न भी दिए गए थे, जिनकी मैंने समीक्षा की थी (मुझे इस रूपरेखा पर विभिन्न परियोजनाओं के कार्यान्वयन पर विचार करना पसंद है - कभी-कभी यह प्रलेखन की कमी के कारण बहुत मदद करता है)।

और इसलिए हम क्या करने जा रहे हैं?

हम एक नियंत्रक लिखेंगे जो फॉर्म मीडिया / सीएसएस / डिफॉल्ट के अनुरोधों को संसाधित करेगा और हमारे पास लौटाया जाएगा (कैश्ड, यदि कोई हो) विचार /... / मीडिया / सीएसएस / डिफॉल्ट.एसएक्स फ़ाइल, उदाहरण के लिए।



कोड को 90% से उधार लिया गया है।



और इसलिए, कोड:

class Controller_Media extends Kohana_Controller{ public function action_index($path, $file) { $this->request->check_cache(sha1($this->request->uri)); //  media/css  media/js        .css  .js ,   =   if($path == 'css' || $path == 'js') { $ext = $path; } else { $ext = pathinfo($file, PATHINFO_EXTENSION); $file = substr($file, 0, -(strlen($ext) + 1)); } //   View::GetTplName()    ,   -  default, ,   views/default/media/...      -    View::GetTplName()     . if ($file = Kohana::find_file('views/'.View::GetTplName().'/media/'.$path, $file, $ext)) { //      ,    $this->request->response = file_get_contents($file); //        $this->request->headers['Content-Type'] = File::mime_by_ext($ext); $this->request->headers['Content-Length'] = filesize($file); $this->request->headers['Last-Modified'] = date('r', filemtime($file)); } else { //   404,     $this->request->status = 404; } } }
      
      







वह, वास्तव में, सब है। अब, विचार / डिफ़ॉल्ट / मीडिया / css / default.css डाउनलोड करने के लिए, बस मीडिया / css / डिफ़ॉल्ट पर जाएं, और किसी चित्र को डाउनलोड करने के लिए कहें, विचार / डिफ़ॉल्ट / मीडिया / img / logo.png हम मीडिया / img / लोगो की ओर रुख करें .png

और इसके लिए हमारे यहाँ ऐसा मार्ग होगा:

 Route::set('media', 'media/<path>/<file>', array('file' => '.*')) ->defaults(array( 'controller' => 'media', 'action' => 'index' ));
      
      







मुझे आपकी टिप्पणियों की प्रतीक्षा है और आशा है कि यह छोटी सी पोस्ट किसी की मदद करेगी।



All Articles