Ease Deployment with Automatic Server Check
Take a peak at the CakePHP manual on configuration and you'll see that you can have two database configurations (and theoretically more, I suppose). Normally you'd have one for your test environment, and one for your live environment.
The manual recommends setting the $useDbConfig
variable to the configuration of choice in each of your models. Certainly, this isn't very practical when it comes to deployment. So why not put it in app_model.php? app_model.php should be in your /app/ folder. If it's not, copy the one from /cake/app_model.php and place it in your /app/ folder. From here you can put in anything that should apply to all models.
class AppModel extends Model {
var $useDbConfig = 'test';
}
But we'd still have to change it every time we upload it to the live server. Instead, have it check which server the request is coming from and set it automatically.
class AppModel extends Model {
function __construct()
{
$this->useDbConfig = $_SERVER['HTTP_HOST'] == 'devserver'?'test':'default';
parent::__construct();
}
}
Just change devserver
to whatever the hostname is of your dev server and you're off to the races. If you really wanted to keep things separated, you could even place the devserver
string in /app/config/core.php
Conversation
Useful. Just one detail : it's recommended to use env('HTTP_HOST') instead of $_SERVER['HTTP_HOST'].
I'm using your script on my site, eveything works perfectly, until I use sanitize...
$sanitizer = new Sanitize();
$sanitizer->clean($this->data); // Don't work
Or
$sanitizer->clean($this->data, $this->MyModel->useDbConfig); // Don't work either
Any idea ?
It appears that is a bug... I have open a ticket :
https://trac.cakephp.org/ticket/2712
It seems that this method doesn't work in CakePHP 1.2