Не удается сохранить элементы POST в базе данных с помощью Phalcon framework

#php #html #phalcon

#php #HTML #phalcon

Вопрос:

Контроллер:

 class PeopleController extends PhalconMvcController{

public function indexAction(){

}
public function CreatePersonAction(){
        $person = new people();
        $person->firstName=$this->request->getPost("firstName");                
        $person->surname=$this->request->getPost("surname");
        $person->telephone=$this->request->getPost("telephone");
        $person->email=$this->request->getPost("email");
        $person->city=$this->request->getPost("city");
        $person->country=$this->request->getPost("country");
        $person->save();
    if ($person) {
        echo"Successfully Registered User!";


    } else {
        echo "Sorry, the following problems were generated: ";
        foreach ($person->getMessages() as $message) {
            echo $message->getMessage(), "<br/>";
        }
    }


    }
}
  

Модель:

 <?php

class People extends PhalconMvcModel{


}
  

Я попытался внедрить метод getSource () в модель, как предполагают документы phalcon, но по-прежнему не получаю желаемого результата сохранения элементов POST в базе данных

Комментарии:

1. Ваши имена полей DB похожи firstName на, surname , … ?

2. Из документа: если вы используете PHP 5.4 / 5.5, рекомендуется объявлять каждый столбец, который является частью модели, чтобы сэкономить память и уменьшить выделение памяти. (Просто подсказка, а не решение вашей проблемы)

3. getSource() это необходимо только в том случае, если в вашей таблице нет имени people .

Ответ №1:

Попробуйте это:

 <?php

use PhalconMvcController as PhController;

class PeopleController extends PhController
{
    public function IndexAction()
    {
        //When no view(aka template) is used you should disable the view rendering
        //Otherwise the output buffer can get overwritten and your echoes won't display
        $this->view->disable(); 

        echo "<h1>Index Action!</h1>";
    }

    public function CreatePersonAction()
    {
        $this->view->disable();

        if($this->request->isPost()) {
            $dataSent = $this->request->getPost();

            $person = new People();
            $person->firstName  = $dataSent["firstName"]
            $person->surname    = $dataSent["surname"];
            $person->telephone  = $dataSent["telephone"];
            $person->email      = $dataSent["email"];
            $person->city       = $dataSent["city"];
            $person->country    = $dataSent["country"];

            $savedSuccessfully = $person->save();

            if($savedSuccessfully) {
                echo "Successfully Registered User!";
            } else {
                $messages = $person->getMessages();

                echo "Sorry, the following problems were generated: ";
                foreach ($messages as $message) {
                    echo "$message <br/>";
                }
            }
        } else {
            echo "The request method should be POST!";  
        }
    }
}
  

Кроме того, добавьте этот код в свой основной index.php (незадолго до PhalconMvcApplication->handle() этого ):

 $debug = new PhalconDebug();
$debug->listen();
  

При этом вы будете получать улучшенные сообщения об ошибках, чтобы вы могли проверить, все ли в порядке с настройками вашей базы данных. Также помните, что Phalcon работает только со схемой базы данных пассивно, это означает, что все таблицы и поля должны уже существовать, чтобы модель была сохранена, Phalcon просто использует таблицы и никогда не создает их.

Комментарии:

1. О, это, кажется, приближает меня к тому, где мне нужно быть, поскольку он жалуется, что запрос не post.. Возможно, что-то не так с моим HTML в представлениях. У меня есть следующее: <form method="POST" action="createPerson"> <div class="input-group"> <label for="firstName">First Name</label><br> <input type="text" class="form-control" placeholder="First Name" name="firstName">

2. @JoshBoiskin пожалуйста, пришлите мне весь ваш HTML-код в pastebin

3. @JoshBoiskin при всем уважении, вам нужно сначала изучить некоторые основы HTML, прежде чем погружаться в PHP. Сначала попробуйте исправить свой HTML.

4. О, спасибо, теперь, по крайней мере, я знаю, что есть проблема с моим HTML, хорошего дня