2010-07-31 10 views
2

J'apprends cakephp, et je faisais juste une simple application de liste Todo à partir d'un livre. L'application prend essentiellement une tâche depuis un champ de saisie, puis vous cliquez sur "Ajouter une tâche" et la tâche doit être ajoutée à la base de données, puis l'utilisateur est redirigé vers la page Affichage des tâches où toutes les tâches sont visibles. . Dans la vue des tâches d'ajout (add.ctp), il y a un bouton "Ajouter une tâche". Le bouton apparaît dans le navigateur, mais il ne fait rien quand on clique dessus, il ne semble même pas être lié à quelque chose ?? Voici mon code:Soumettre le bouton de formulaire ne fonctionne pas pour l'application de liste de tâches simple (je suis nouveau à CakePHP)?

//Model: task.php 
<?php 
    class Task extends AppModel 
    { 
    var $name = 'Task'; 
    } 
?> 

//Controller: tasks_controller.php 
<?php 
    class TasksController extends AppController 
    { 
     var $name = 'Tasks'; 
     var $helpers = array('Html', 'Form'); 
    function index() 
    { 
     $this->set('tasks', $this->Task->find('all')); 
    } 

     function add() 
     { 
      if (!empty($this->data)) { 
       $this->Task->create(); 
       if ($this->Task->save($this->data)) { 
        $this->Session->setFlash('The Task has been saved'); 
        $this->redirect(array('action'=>'index'), null, true); 
       } else { 
        $this->Session->setFlash('Task not saved. Try again.'); 
       } 
      } 
     } 
    } 
?> 

//View: views/tasks/index.ctp 
<h2>Tasks</h2> 
<?php if(empty($tasks)): ?> 
    <p>There are no tasks in this list</p> 
<?php else: ?> 
    <table> 
     <tr> 
      <th>Title</th> 
      <th>Status</th> 
      <th>Created</th> 
      <th>Modified</th> 
      <th>Actions</th> 
     <tr> 
     <?php foreach($task as $task): ?> 
      <tr> 
       <td> 
        <?php echo $task['Task']['title'] ?> 
       </td> 
       <td> 
        <?php 
         if($task['Task']['done']) echo "Done"; 
         else echo "Pending" 
        ?> 
       </td> 
       <td> 
        <?php echo $task['Task']['created'] ?> 
       </td> 
       <td> 
        <?php echo $task['Task']['modified'] ?> 
       </td> 
       <td> 
       </td> 
      </tr> 
      <?php endforeach; ?> 
    </table> 
<?php endif; ?> 

//View: views/tasks/add.ctp 
<?php $form->create('Task'); ?> 
<fieldset> 
    <legend>Add New Task</legend> 
    <?php 
     echo $form->input('title'); 
     echo $form->input('done'); 
    ?> 
</fieldset> 
<?php echo $form->end('Add Task'); ?> 

//My Database setup 
CREATE TABLE `tasks` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) NOT NULL, 
    `done` tinyint(1) DEFAULT NULL, 
    `created` datetime DEFAULT NULL, 
    `modified` datetime DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

espoir des thats assez clair. Ceci est une application très simple, donc je suis sûr que la solution est facile. Dans la vue des tâches d'ajout (add.ctp), il y a un bouton "Ajouter une tâche". Le bouton apparaît dans le navigateur, mais il ne fait rien quand on clique dessus, il ne semble même pas être lié à quelque chose ??

Merci d'avance, j'apprécie toute aide.

Répondre

3

À première vue, il semble que vous avez oublié d'écho de la balise de formulaire d'ouverture dans les vues/tâches/add.ctp Essayez de remplacer

<?php $form->create('Task'); ?> 

avec

<?php echo $form->create('Task'); ?>