【发布时间】:2014-01-13 02:09:38
【问题描述】:
我正在开发一个可供不同细分市场使用的系统。每个都有自己独立的数据库,但都具有相同的功能。我想在我的路由中有一个前缀,以便我可以选择数据库。
我发现并尝试遵循这个建议: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 前缀创建链接?
或者我完全不在了?
【问题讨论】:
标签: cakephp