loadmodel não funciona por quê?
-
27-10-2019 - |
Pergunta
no Section_controller, eu uso o loadmodel para imprimir o nome do usuário nas seções / arquivo de índice, mas recebo o erro:
Aviso (8): Variável indefinida: usuário [APP \ views \ Section \ index.ctp, linha 3]
public function index ()
{
$this->loadModel('User');
$user = $this->User->find('all');
$this->Section->find('threaded', array('order' => array('Section.created ASC')));
$this->set('data','user');
}
nas seções / índice
<div><?php echo $user['User']['username']; ?></div>
Solução
Você não está atribuindo a variável corretamente, tente o seguinte:
$this->set('user', $user);
$user
apontando para o resultado de sua localização e definido como user
, já que é isso que você está tentando chamar em sua visualização.Ou, alternativamente, use a notação compact
para obter o mesmo:
$this->set(compact('user'));
O que você está fazendo agora é definir uma variável chamada data
com o valor da string user
, portanto, quando você faria isso em sua visualização:
echo $data;
Ele retornaria user
como uma string em sua visualização.
Como um find ('all') retornará uma matriz, certifique-se de repetir os resultados em sua visualização também, como este:
foreach($user as $u) {
echo $u['User']['username'];
}
Ou se você quiser um resultado específico, chame sua chave de array, que para o primeiro usuário seria:
echo $user[0]['User']['username'];
Outras dicas
Você cometeu um erro de digitação, tente:
$this->set('data',$user);
e em sua opinião:
<div><?php echo $data['User']['username']; ?></div>
Espero que isso ajude!