'render' - это функция, а не свойство. Так что ваш код, вероятно, должен быть:
$this->render('pages/client_login');
edit: кстати, этот код не может быть помещен в обратный вызов beforeRender (), потому что это приведет к бесконечному циклу (render () поднимается beforeRender ()).
beforeFilter () определенно будет лучшим местом.
function beforeFilter()
{
if ($this->Session->check('client') != true)
{
$this->autoRender = false;
$this->layout = 'client_login';
$this->render('/pages/client_login');
}
}
EDIT
Как объяснено в моих комментариях, явный вызов метода render () в методе PagesController-> display () запрещает работу, которую вы хотите выполнять, когда вы находитесь на URL-адресе, использующем PagesController.
Подумав немного о ваших потребностях, я вижу два решения.
Если вам нужен простой способ временной защиты вашего сайта без изменения кода приложения, вы можете использовать Apache для защиты доступа через .htaccess. Обычная аутентификация или, может быть, фильтр по IP или домену может помочь вам в вашем случае. См http://httpd.apache.org/docs/2.0/howto/auth.html
Если вы хотите использовать Cake, потому что у вас уже есть настроенная система аутентификации, которая заполняет сеанс, вы можете использовать компонент Auth только для предоставления или запрета доступа. В вашем AppController у вас может быть что-то вроде:
function beforeFilter()
{
$this->Auth->loginAction = '/pages/client_login';
if($this->Session->check('client'))
{
$this->Auth->allow('*');
}
}