2011-12-28 10 views
2

私はCodeIgniterを使い始めました。私はかなりうまくいっているようです。私は問題にヒットしました。CodeIgniterとコントローラ

私は記事と呼ばれるコントローラを持っています。サイトのユーザーは、次の操作を行うことができます:

  • はスラッグ名
  • の記事を取得しますが、Xのタグ名を持つ記事のリストを取得するカテゴリ
  • に記事のリストを取得します
単一の記事について -

  • Article.php

    私の問題は、私は3つの別々のコントローラを作成する必要がありますです

  • Category.php - 私はArticle.phpですべてを配置する必要があり、

Xタグを持っているか、記事のリストについて - Xのカテゴリ

  • Tag.phpを持っている記事の一覧については?

    私は物事を行う従来の方法を理解しようとしています。

  • +0

    3つの機能すべてが記事を返すので、私は1つのアーティクルコントローラのみを使用することにします。 – bobo

    答えて

    1

    タグは、記事なしでは何も意味しない限り、1つのコントローラが必要なように聞こえます。

    セマンティクスのために、私はArticles.phpに "s"という名前に変更します。次に、あなたが持っているでしょう: "カテゴリ" は、クラス/コントローラArticlesの方法である

    /articles/category/{$category_id}

    を。コントローラのクラス名も変更してください。

    私はおそらくスタックオーバーフローが何に似て、「タグ付け」するための「タグ」メソッドの名前を変更しますので、URLはもう少し理にかなって:

    と同様に

    /articles/tagged/{$tag_slug}

    http://stackoverflow.com/questions/tagged/codeigniter

    「ビュー」と呼ばれる個々の記事のために

    、メソッドを作成します。「タグ」または「カテゴリ」、スタンドアロンのエンティティたか、単に記事よりも、より多くのものを収納することができる場合

    /articles/view/{$article_slug}

    、あなたが望むかもしれませんそれぞれ自分のコントローラーにすることができますが、この場合、私はあなたが必要とは思わないのです。

    +0

    有効なポイント。複数のコントローラを使用する場合は、とにかく '{class}/{method}/{slug} 'のような1つのメソッドしか含まれません。私はちょうど今、1つのコントローラに固執するかもしれません。それをすることが容認される限り。私はCIを使用することを学ぶだけでなく、MVCパターンを使用するときの従来の方法も学びます。ご意見ありがとうございます。 – GV1

    +1

    ルールはなく、慣習がないことを覚えておいてください。それらは人によって異なります。あなたのために働くものを行い、その経験から学びます。各メソッドが1つしかないコントローラを使用して終了する場合は、CI ['_remap()'](http://codeigniter.com/user_guide/general/controllers.html#remapping)メソッドを調べるか、または 'routes '.php'を使ってすべてのものを' index() 'メソッドでルーティングし、URLを素早く清潔に保ちます。 –

    0

    これはどのように行うのかはあなた次第ですが、私は個人的にそれを1つのコントローラに置き、データを表示するためのさまざまな方法を提供します。私はこれを従来の方法としても見ていますが、それはまだプロジェクトに依存しています。

    1

    私は個人的には通常1つのコントローラを一般的に使用し、その中にすべてを入れます。誰かが自分のサイトのすべてのページにコントローラを使用して、URLがよりよく反映されるようにします。あなたがページごとに1つのコントローラを使用する場合は、ページごとにコントローラを使用する場合、あなたは明らかにこの

    example.com/blog 
    example.com/about 
    example.com/contact 
    

    のようなURLを持つことができますが

    あなたは

    example.com/blog/article 
    example.com/blog/about 
    example.com/blog/contact 
    

    のようなURLを持っていますこれらのコントローラーのそれぞれには索引機能があります。

    あなたの場合、タグ/記事/その他を扱う異なる機能を持つ1つのコントローラを使用します。

    関連する問題