Кнопка отправки формы не работает для простого приложения со списком задач (я новичок в CakePHP)?

Я изучаю cakephp, и я просто делал простое приложение для списка дел из книги. Приложение в основном берет задачу из поля ввода, затем вы нажимаете «Добавить задачу», и задача должна быть добавлена ​​в базу данных, а затем пользователь перенаправляется на страницу «Просмотр задач», где можно увидеть все задачи, включая ту, которую они только что добавили. . В окне добавления задачи (add.ctp) есть кнопка «Добавить задачу». Кнопка отображается в браузере, но ничего не делает при нажатии, кажется, что она даже ни с чем не связана?? Вот мой код:

//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;

Надеюсь, это достаточно ясно. Это очень простое приложение, поэтому я уверен, что это легко исправить. В окне добавления задачи (add.ctp) есть кнопка «Добавить задачу». Кнопка отображается в браузере, но ничего не делает при нажатии, кажется, что она даже ни с чем не связана??

Заранее спасибо, буду признателен за любую помощь.


person Amir Rustamzadeh    schedule 31.07.2010    source источник


Ответы (1)


На первый взгляд кажется, что вы забыли повторить тег открывающей формы в views/tasks/add.ctp Попробуйте заменить

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

с участием

<?php echo $form->create('Task'); ?>
person Mike    schedule 31.07.2010