我正在研究可能被不同細分市場使用的系統。每個都有自己獨立的數據庫,但都具有相同的功能。我想在我的路線中有一個前綴,以便我可以選擇數據庫。在cakephp 2.4中使用路由前綴進行數據庫選擇?
我發現並試圖遵循這個建議:CakePHP - select database config based on route or url?
因此,使用上面的回答,我有這樣的設置:
route.php:
App::uses('SystemSelector', 'Routing/Route');
Router::connect('/:sys/*', array(), array('routeClass' => 'SystemSelector'));
Router::connect('/:sys', array('controller' => 'users', 'action' => 'login'));
Router::connect('/:sys/users/logout', array('controller' => 'users', 'action' => 'logout'));
Router::connect('/:sys/users/add', array('controller' => 'users', 'action' => 'add'));
Router::connect('/:sys/tickets/index', array('controller' => 'tickets', 'action' => 'index'));
Router::connect('/:sys/tickets/view', array('controller' => 'tickets', 'action' => 'view'));
Router::connect('/:sys/tickets/add', array('controller' => 'tickets', 'action' => 'add'));
SystemSelector.php:
class SystemSelector extends CakeRoute {
// see http://book.cakephp.org/view/1634/Custom-Route-classes
public function parse($url) {
$params = parent::parse($url);
if (empty($params)) {
return false;
}
switch ($params['sys']) {
case 'test':
DbSelector::$ds = 'test';
break;
case 'example':
DbSelector::$ds = 'example';
break;
default:
throw new Exception('Bad route');
}
return false;
}
}
和我的AppModel.php:
class AppModel extends Model {
public function __construct($id = false, $table = null, $ds = null) {
$ds = DbSelector::$ds;
parent::__construct($id, $table, $ds);
}
}
我遇到的問題是,在我的appController.php我:
public $components = array(
'Session',
'DebugKit.Toolbar',
'Auth' => array(
'authenticate' => array(
'Form' => array(
'passwordHasher' => 'My64',
'fields' => array('username' => 'user_login',
'password' => 'user_senha')
)
),
'loginAction' => array('controller' => 'users', 'action' => 'login'),
'loginRedirect' => array('controller' => 'tickets', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'users', 'action' => 'login')
)
);
,登錄重定向帶我到example.com/tickets/index,我認爲我應該做: example.com/:sys/tickets/index。
如何將:sys前綴傳遞給此loginRedirect選項? 另外,如何用正確的:sys前綴在我的視圖內創建鏈接?
還是我完全沒有?
呀看,這做到了。謝謝! – Salsa