2010-11-17 3 views
0

Je suis nouveau à Code Igniter.CodeIgniter meilleure méthode?

Je cherche à réécrire notre système actuel pour utiliser l'allumeur de code.

Ma question actuelle est.

Je transfère le formulaire de connexion. Actuellement, nous avons une page avec reçoit une demande ajax et valide les données et renvoie l'état lorsque le formulaire est soumis.

Comment dois-je procéder dans Code Igniter? Mes pensées sont de créer un contrôleur qui reçoit la demande.

Mais,

Un contrôleur ne doit pas cracher toute réponse.

Est-ce que cela signifie que je devrais créer une vue juste pour cracher quelques lignes de json?

+0

I 'ai fait cette chose exacte et j'ai abordé le problème en faisant votre original suggestion J'ai créé un contrôlé, il a appelé une méthode dans un modèle et ensuite retourné le résultat. Ça fonctionne bien.Je n'avais aucune idée que les contrôleurs ne devraient pas retourner des valeurs. –

Répondre

1

Bien sûr. Vous pouvez même en faire une vue générique qui peut cracher n'importe quel JSON que vous voulez, puis passer l'objet à json_encode d à la vue. De cette façon, vous pourriez réutiliser la même vue pour les autres contrôleurs qui traitaient également les requêtes AJAX. Code

+0

Merci, C'est une bonne idée. Étendre là-dessus, Dois-je créer un modèle générique 'ajax' qui gère toutes les requêtes ajax, quelque chose comme http://example.com/ajax/login ou http://example.com/ajax/contacts/edit/123 Le seul problème est que je pouvais voir cela devenir assez grand. – Hailwood

+2

Je suggérerais pas. L'idée des contrôleurs est de séparer les différentes parties de votre site - AJAX n'est pas une «partie de votre site», c'est une technologie que votre site utilise. – Amber

1

Le code Igniter a une classe d'entrée et une classe de validation de formulaire. Ils ont tous les deux méthodes qui sont utiles pour l'entrée sous forme de manipulation:

Je créerais un contrôleur de compte avec une méthode de connexion. La méthode de connexion utilise les classes mentionnées précédemment pour la gestion des formulaires, puis appelle votre modèle pour exécuter la requête DB.

Je ne pense pas avoir un contrôleur ajax serait d'une grande valeur pour vous. Vous finirez probablement par utiliser ajax dans tous vos contrôleurs. Si vous voulez penser à optimiser vos contrôleurs pour ajax, je diviserais toutes les "parties mobiles" en petites tâches faiblement couplées. Comme les requêtes ajax ne rechargent pas toute la page, il est plus facile d'exécuter uniquement la logique requise.

Sur le frontal, il est utile d'utiliser des modèles basés sur des modèles. De cette façon, la seule chose que vous envoyez à la sortie est la mise à jour de la partie. La classe d'analyseur de code Igniter aide également à modéliser.

0

Voici un exemple de la façon dont vous pourriez effectuer la connexion. C'est de l'un de mes propres sites. Aimerions aussi les commentaires des autres si vous voyez les meilleures pratiques que je manque

VIEW

if (isset($message)) {echo $message;} //error message 

echo form_open('login/validate_credentials', 'class="form-container"'); 
echo form_input('username', 'Username', 'class="form-field"'); 
echo form_password('password', 'Password', 'class="form-field"'); 
echo form_submit('submit', 'Login'); 
echo anchor('login/signup', 'Need an account? Enroll now!'); 
echo form_close(); 

CONTRÔLEUR

function validate_credentials() 
    {  
    $this->load->model('usermodel'); 
    $query = $this->usermodel->validateUser(); 

    if($query) // if the user's credentials validated... 
    { 
     $data = array(
      'username' => $this->input->post('username'), 
      'is_logged_in' => true, 
      'bt_link' => $this->usermodel->getBTlink($this->input->post('username')), 
     ); 

     $this->session->set_userdata($data); //store in session 

     $this->load->view('membership'); //logged in 
    } 
    else // incorrect username or password 
    { 
     $data['message'] = "Invalid credentials"; 
     $data['header_type'] = 'header'; 
     $data['main_content'] = 'login_form'; 
     $this->load->view('template', $data); 
    } 
} 

Voici un CI tutoriel

http://net.tutsplus.com/sessions/codeigniter-from-scratch

Questions connexes