2010-08-05 10 views
2

J'ai besoin de l'une de mes actions de contrôleur pour retourner une liste de noms, sur le nom par ligne, en texte brut. La raison en est que cela peut être consommé par le plugin JQuery autocomplete qui attend ce format. Malheureusement, lorsque la page s'affiche, les caractères \n ne seront pas rendus comme des retours à la ligne.Comment obtenir CakePHP pour afficher du texte en clair avec des sauts de ligne?

Contrôleur

function UserController extends AppController { 
    var $components = array('RequestHandler'); 

    function users_ajax() { 
     $users = $this->User->find('all'); 
     $this->set('users', $users); 

     $this->layout = false; 
     Configure::write('debug', 0); 
     $this->RequestHandler->respondAs('text'); 
    } 
} 

Voir

foreach($users as $user) { 
    echo $user['User']['name'] . '\n'; 
} 

Résultat

PREMIER UTILISATEUR \ USER Nsecond \ Nthird USER \ n

Pour autant que je sache, la vue est être retourné sous forme de texte, cependant, le \n est rendu à la lettre. Comment puis-je empêcher cela?

Répondre

7

Ce n'est pas le gâteau c'est juste le PHP. :)

En utilisant des guillemets simples, les caractères entre eux sont traités comme une chaîne, tandis que les guillemets interprètent le \ n sur une nouvelle ligne. SO dans votre cas:

foreach($users as $user) { 
    echo $user['User']['name'] . "\n"; 
} 

devrait faire la magie :)

+0

Mon front me fait mal de le gifler si dur. Merci, j'ai complètement oublié la différence entre les chaînes littérales et interprétées et les traitait comme javascript. – Soviut

+0

Si vous avez besoin de saisir du texte brut au format HTML et que les sauts de ligne apparaissent, enveloppez votre variable dans un appel nl2br (...). PHP intégré. –

Questions connexes