小花のメディアファイルコントローラー

ご挨拶!

この記事は初心者に役立つ可能性が高くなりますが、フレームワークに関する詳細なドキュメントがないため、それらの多くが存在するため、とにかく公開することにしました。

この記事を書くために、私はKohanaのメディアファイルの操作に関する多くの質問と、私がレビューしたKo3のプロジェクトの多くのソースコードのコードの一部に促されました(このフレームワークでのさまざまなプロジェクトの実装を検討したい-時にはドキュメントが不足しているために役立ちます)。

それで、私たちは何をするつもりですか?

たとえば、media / css / defaultという形式のリクエストを処理し、ビュー(...がある場合はキャッシュ)にビュー/.../ media / css / default.cssファイルを返すコントローラーを作成します。



コードは、ユーザーガイドモジュールから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; } } }
      
      







実際、それがすべてです。 今、views / default / media / css / default.cssをダウンロードするには、media / css / defaultに移動し、views / default / media / img / logo.pngから画像をダウンロードするには、media / img / logoに移動します.png

このため、ここにそのようなルートがあります。

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







あなたのコメントを楽しみにしており、この小さな投稿が誰かを助けることを願っています。



All Articles