В beforeFilter я устанавливаю переменную для моего представления по умолчанию на основе пользователя, который вошел в систему ... Это прекрасно работает, пока не будет вызвано действие выхода из системы.
class AppController extends Controller {
var $components = array('Acl', 'Auth', 'Session', 'FcStudentMilestone', 'FcSection');
function beforeFilter(){
$this->set('completed_data', $this->_completedData());
}
function _completedData(){
$arr = array();
$x = strval($this->Auth->user('id'));
$compData = $this->FcStudentMilestone->find('all',
array('conditions' => array(
'FcStudentMilestone.user_id' => $x,
'FcStudentMilestone.completed' => '1')));
foreach ($compData as $compDatum) {
$compString = $this->FcSection->find('all',
array('conditions' =>
array('FcSection.id' =>
$compDatum['FcStudentMilestone']['fc_section_id'])));
array_push($arr, $compString[0]['FcSection']['name']);
}
return $arr;
}
Я думаю, что большинство изэтот код не имеет значения, но он все равно есть.Происходит следующее: когда пользователь выходит из системы, он все еще пытается выполнить запрос после выхода из системы, но компонент Auth не имеет идентификатора пользователя.
Я попытался использовать if ($ this-> Auth-> user ()) или if ($ this-> Auth-> user ('id')), но это все еще возвращает true и продолжает пытаться выполнить запрос.
вот ошибка яполучение: Call to undefined method FcStudentMilestoneComponent::find()
У меня есть файл компонента FcStudentMilestone в папке компонентов, так что я действительно думаю, что это как-то связано с отсутствием идентификатора пользователя, но я могу быть далеко.
Кроме того, заметили, что ошибка относится к фактическому оператору поиска, но я вызываю текущий идентификатор пользователя в строке ранее, так почему бы не отметить эту строку вместо строки с оператором поиска?