0

私はcake php version 1.3.112つのテーブルを使用しています。1つはでarticle_category、もう1つはですarticles。記事カテゴリIDを持つ記事の詳細に使用する記事カテゴリ名と記事テーブルを格納する記事カテゴリ。

カテゴリごとの記事リストを一覧表示する記事コントローラーを作成します。これで、URLの表示は次のよう になります。mysite/articles/index/<article_category_id> そのタイプのリストの代わりに、次のようにURLを表示したいと思い mysite/<article_category_name>/index ます。どうすればよいですか。

4

1 に答える 1

0

わかりました、そこにいくつかのことがあります。

慣例 はクックブックに従い、理解を深めます

  1. あなたはただだったarticle_categoryはずcategoriesです。
  2. article_categoryタイプの名前は、HABTM タイプの関係の結合テーブル (多対多の関係) に使用されます。結合テーブルとしても、 だったはずarticles_categoriesです。Inflectore::pluralize('singularname')複数のケースを作成するために使用できます。詳細についてはクックブックをフォローしてください

CakePHP には、カスタムルートの接続を処理するRouter Classがあります。にありますApp/Config/route.php。これを使用して、ほぼすべての URL の要求を満たすことができます。

解決策として、

  • categories(あなたの場合は article_category )テーブルを変更して、というフィールドを含めますslug。名前と比較してスラッグを持つことをお勧めします。
  • 新しいルートを定義する詳細については、CookBook に従ってください

    // In app/Config/routes.php 
    Router::connect(
        '/articles/index/:id-:slug', // E.g. /articles/index/3-technology
        array('controller' => 'articles', 'action' => 'index'),
        array(
        // order matters since this will simply map ":id" to $articleId in your action
            'pass' => array('id', 'slug'),
            'id' => '[0-9]+'
       )
    );
    
  • スラッグを受け入れるようにコントローラーのアクションを変更します

    public function index( $id, $slug = null ) {
    
    }
    
于 2013-03-19T06:58:00.447 に答える