私はウェブアプリケーションfarm.ba(所有者がこれ以上管理していない)でこのアプローチを使用しました。
私が何をしたか
:ノードを処理
- ..フィールドのID、スラグ、モデル、FOREIGN_KEY、タイプとテーブル "ノード" を作成したカスタムルート(1)を作成し、(2)クラスポストを保存した後、モデル
- 、店舗やキャッシュスラグノードモデルで
- ポストを削除した後、キャッシュノード、レコードに
を削除
これは、多くのwordpressのルーティングと同じように動作しますが、カスタムスラグを入力することができます、など
EDIT:
のようなアプリケーション/ libに/ルーティング/ルータ/ MultiRoute.phpでカスタムルートクラスを作成します。
をroutes.phpの
余分な要求を使用して、コントローラの検索結果で
App::uses('MultiRoute', 'Lib/Routing/Route');
Router::connect('/admin/*',
array('admin' => true),// we set controller name in MultiRoute class
array('routeClass' => 'MultiRoute')
);
Router::connect('/*',
array(),// we set controller name in MultiRoute class
array('routeClass' => 'MultiRoute')
);
で
<?php
App::uses('CakeRoute', 'Routing/Route');
/**
* MultiRoute
*/
class MultiRoute extends CakeRoute
{
public function parse($url)
{
// debug($url); '/florida/abc/people/add'
// Add custom params
$params = array(
'location' => null,
'company' => null,
'controller' => 'peoples',
);
$params += parent::parse($url);
// debug($params);
/**
* array(
* 'location' => null,
* 'company' => null,
* 'controller' => 'peoples',
* 'named' => array(),
* 'pass' => array(
* (int) 0 => 'florida', // location
* (int) 1 => 'abc', //company
* (int) 2 => 'people', // controller
* (int) 3 => 'add' // action, default index
* ),
* 'action' => 'index',
* 'plugin' => null
*)
*
*/
// reverse passed params
$pass = array_reverse($params['pass']);
// debug($pass);
/**
* array(
* (int) 0 => 'add',
* (int) 1 => 'people',
* (int) 2 => 'abc',
* (int) 3 => 'florida'
* )
*/
if(isset($pass[3])) { $params['location'] = $pass[3]; }
if(isset($pass[2])) { $params['company'] = $pass[2]; }
// if you need load model and find by slug, etc...
return $params;
}
public function match($url)
{
// implement your code
$params = parent::match($url);
return $params;
}
}
パラメータ:
$this->request->location;
$this->request->company;
この情報は役に立ちましたか?
カスタムルートが何を覚えていますか?私はCustom Routesを選択肢として見ましたが、この問題を解決する方法を確信できません。 – Dave
こんにちは@Dave、残念ながら、私は上記のアプリケーションのコードがありません。私はあなたの編集された答えであなたにアイデアをあげます、 – Salines