CakePHP 2.6:会话读入控制器不工作
CakePHP 2.6 : Session Read In Controller Not Working
我已经通过以下语法在会话中编写了我的 client.id
。
$this->Session->write('Client.id', $client_id);
然后我在view.ctp中检查了它,就像下面的代码
<pre><?php print_r($this->Session->read('Client.id')); ?> </pre>
它正在用 id
打印数组。
现在 Controller
我已尝试使用以下代码获取会话 client.id
。
$client_id = $this->Session->read('Client.id');
这次我没有得到 $client_id
。有没有错误。有人可以帮我吗?
这里我添加了评论中提到的更多代码
在用户控制器中,我在登录操作中设置了用户 $client_id
if($user_role == 'client')
{
$user_email = $this->Auth->user('email');
$this->loadModel('Client');
$client_id = $this->Client->find('all',
array(
'conditions'=>array('Client.email'=>$user_email),
'fields' => array('Client.id'),
'limit' => 1,
'recursive' => -1, //int
)
);
$this->Session->write('Client.id', $client_id);
}
这是我尝试在条件下应用它的代码
if($role == 'client'){
$this->AppComment->recursive = 0;
$client_id = $this->Session->read('Client.id');
$this->Paginator->settings = array(
'conditions' => array('AppComment.client_id' => $client_id)
);
$this->set('appComments', $this->Paginator->paginate());
}
我发现了错误
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'where clause'
这是
的输出
<pre><?php print_r($this->Session->read('Client.id')); ?> </pre>
我得到的输出
Array
(
[0] => Array
(
[Client] => Array
(
[id] => 1
)
)
)
在登录操作中试试这个
if($user_role == 'client'){
$user_email = $this->Auth->user('email');
$this->loadModel('Client');
$client_id = $this->Client->find('first',
array(
'conditions'=>array('Client.email'=>$user_email),
'fields' => array('Client.id'),
'recursive' => -1, //int
)
);
if(!empty($client_id)){
$this->Session->write('Client.id', $client_id["Client"]["id"]);
}
}
并检查您的条件是否设置了会话
if($this->Session->check("Client.id")){
$client_id = $this->Session->read("Client.id");
}else{
//handle if session is not set
}
我解决这个问题只是添加下面的代码
$this->Session->write('Client', $client_id[0]["Client"]['id']);
我已经通过以下语法在会话中编写了我的 client.id
。
$this->Session->write('Client.id', $client_id);
然后我在view.ctp中检查了它,就像下面的代码
<pre><?php print_r($this->Session->read('Client.id')); ?> </pre>
它正在用 id
打印数组。
现在 Controller
我已尝试使用以下代码获取会话 client.id
。
$client_id = $this->Session->read('Client.id');
这次我没有得到 $client_id
。有没有错误。有人可以帮我吗?
这里我添加了评论中提到的更多代码
在用户控制器中,我在登录操作中设置了用户 $client_id
if($user_role == 'client')
{
$user_email = $this->Auth->user('email');
$this->loadModel('Client');
$client_id = $this->Client->find('all',
array(
'conditions'=>array('Client.email'=>$user_email),
'fields' => array('Client.id'),
'limit' => 1,
'recursive' => -1, //int
)
);
$this->Session->write('Client.id', $client_id);
}
这是我尝试在条件下应用它的代码
if($role == 'client'){
$this->AppComment->recursive = 0;
$client_id = $this->Session->read('Client.id');
$this->Paginator->settings = array(
'conditions' => array('AppComment.client_id' => $client_id)
);
$this->set('appComments', $this->Paginator->paginate());
}
我发现了错误
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'where clause'
这是
的输出<pre><?php print_r($this->Session->read('Client.id')); ?> </pre>
我得到的输出
Array
(
[0] => Array
(
[Client] => Array
(
[id] => 1
)
)
)
在登录操作中试试这个
if($user_role == 'client'){
$user_email = $this->Auth->user('email');
$this->loadModel('Client');
$client_id = $this->Client->find('first',
array(
'conditions'=>array('Client.email'=>$user_email),
'fields' => array('Client.id'),
'recursive' => -1, //int
)
);
if(!empty($client_id)){
$this->Session->write('Client.id', $client_id["Client"]["id"]);
}
}
并检查您的条件是否设置了会话
if($this->Session->check("Client.id")){
$client_id = $this->Session->read("Client.id");
}else{
//handle if session is not set
}
我解决这个问题只是添加下面的代码
$this->Session->write('Client', $client_id[0]["Client"]['id']);