Показаны сообщения с ярлыком cakephp. Показать все сообщения
Показаны сообщения с ярлыком cakephp. Показать все сообщения

суббота, 26 сентября 2020 г.

CakePHP сниппеты

 1. Получение последнего выполненного SQL запроса к модели:

    function getLastQuery($model) {
        // вернет последний выполненный SQL запрос к модели - для отладки
        $dbo = $model->getDatasource();
        $logData = $dbo->getLog();
        $getLog = end($logData['log']);
        return $getLog['query'];
    }
 

понедельник, 4 ноября 2019 г.

Залогинивание вручную

Принимаем запрос по /login?u=username&p=password
Затем загружаем юзера по логину и сравниваем запрошенный и установленный пароли с помощью хешера. Если все совпало, то логиним юзера и возвращаем все его параметры.

   public function login() {
        $data = $this->request->query;

        $this->loadModel('User');
        $user = $this->User->find('first', array('conditions' => array('login' => $data['u'])));
       
        $passwordHasher = new BlowfishPasswordHasher();
        $confirm = $passwordHasher->check($data['p'], $user['User']['password']);
        if ($confirm) { // пароль поравильный
            $this->Auth->login($user['User']);
            $data = $this->Session->read('Auth');
        } else {
            $data = array('Error' => 'Bad password');
        }

        $this->set(compact('data'));
       
    }

понедельник, 28 октября 2019 г.

Выборка записи по ID с установкой условия в подчиненной таблице

Зависимость  Execution.task_id == Task.id

        $this->loadModel('Task');

        $this->Task->hasMany['Execution']['conditions'] = array(
            'Execution.user_id' => $current_user_id
        );

        $task = $this->Task->findById($task_id);

Как видим, принудительной подгрузки подчиненной таблицы нет. Только установление ограничения в настройке связки мастер-таблицы.

воскресенье, 27 октября 2019 г.

Время жизни сессии в CakePhp 2


Установить большое время жизни сессии (например 3 дня):

В файле core.php 

Configure::write('Session', array( 
  'defaults' => 'php',
   'timeout' => 259200, 
   'ini' => array( 
          'session.gc_maxlifetime' => 259200 // 3 day )
 ));