LoadModel non funziona perché?
-
27-10-2019 - |
Domanda
In Sections_Controller utilizzo loadModel per stampare il nome utente in sezioni/file indice ma ricevo errore:
AVVISO (8): variabile indefinita: utente [app viste sezioni index.ctp, riga 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');
}
nelle sezioni/indice
<div><?php echo $user['User']['username']; ?></div>
Soluzione
Non stai assegnando correttamente la variabile, prova invece:
$this->set('user', $user);
$user
indicando il tuo risultato di ricerca e imposta come user
, dato che è quello che stai cercando di chiamare nella tua vista. O in alternativa utilizzare il file compact
Notazione per ottenere lo stesso:
$this->set(compact('user'));
Quello che stai facendo ora è impostare una variabile chiamata data
con il valore della stringa user
, quindi quando lo faresti a tuo avviso:
echo $data;
Sarebbe tornato user
come stringa nella tua vista.
MODIFICARE
Dato che una ricerca ("tutto") restituirà un array, assicurati di fare il ciclo anche sui risultati nella tua vista, in questo modo:
foreach($user as $u) {
echo $u['User']['username'];
}
O se si desidera un risultato specifico, chiama il tasto array, che per il primo utente sarebbe:
echo $user[0]['User']['username'];
Altri suggerimenti
Hai un errore di battitura, prova:
$this->set('data',$user);
E poi nel tuo punto di vista:
<div><?php echo $data['User']['username']; ?></div>
Spero che sia di aiuto !