1

私は自分でベースからCMSを書いています。Node および NodeType ロジックを使用してコンテンツ セクションを実装しました。(すべてのノードは NodeType に属します) Nodes テーブルと NodeTypes テーブルの両方に Slug フィールドがあり、ルーターに次の 2 つのルートを書きました:

Router::connect('/:typeslug',array('controller' => 'nodetypes', 'action' => 'view'),array('pass'=>array('typeslug')));
Router::connect('/:typeslug/:nodeslug',array('controller' => 'nodes', 'action' => 'view'),array('pass'=>array('typeslug','nodeslug')));

http://domain.ext/article/my-custom-article最初
の質問: これは正しい方法ですか?
2 番目の質問: wordpress のような複雑なスラッグを使用するための解決策は何ですか? (たとえば、アーカイブされた日付のようなスラッグを使用する: http://mydomain.ext/2013/01/01/article/ ....
そして何よりも重要なのは、管理セクションでスラッグの種類を切り替える機能です。

ガイドをありがとう

4

1 に答える 1

1

質問1

これは正しくて正常な方法ですか?

はい、問題ありません。CakePHP アプリ (ドキュメントPagesController)にバンドルされている をご覧ください。

質問2

ワードプレスのような複雑なスラッグを使用するための解決策は何ですか? (たとえば、アーカイブされた日付のようなスラッグを使用する: http://mydomain.ext/2013/01/01/article/ ....

この特定のケースでは、routes.phpファイルに追加のルートを設定する必要があります。

例えば:

Router::connect(
    '/article/:year/:month/:day/*', array('controller' => 'articles')
);

http://mydomain.ext/article/2013/01/01に対するすべてのリクエストは、記事コントローラーの次のアクションにルーティングされます。

public function index($year, $month, $day){
    ...
}

存在しないコントローラーに対するあいまいな要求を回避するため、URL を少し逆にしたことに注意してください。

質問 3

...そして何よりも重要なのは、管理セクションでスラッグの種類を切り替える機能です。

このインスタンスでできることは、別の構成値に応じてルーティングのオンとオフを切り替えることです。アプリケーション専用の構成ファイルをセットアップする必要がありますが、実行時に変更できます。

Routing.php:

// load your routing configuration 
Configure::load('application_config', 'default');
// setup your routes
if(empty(Configure::read('routing_1')){
    // default routing
    ...
}else{
    // routing 1
    ...
}

AdministrationController.php:

public function someAction(){
    // persist configuration to file
    Configure::dump('application_config', 'default', array('routing_1' => true));
}

詳細については、ドキュメントの「構成ファイルの読み取りと書き込み」セクションを参照してください。

これがあなたを正しい方向に向けてくれることを願っています。

于 2013-05-17T22:04:28.230 に答える