#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, хорошего дня