Phalcon save
функция запрашивает обязательные поля, даже если она доступна из post
, Ранее использовал tag
и все работало нормально и в состоянии сделать полный CRUD
функциональность. Теперь я хотел реализовать проверку и обновленный код из tag
в form
; после изменений я не смог выполнить save
или же update
, Для просмотра я использую .volt
синтаксис для отображения form
,
Всегда получаю сообщение об ошибке как «Имя обязательно» даже если его
жестко закодированы.что будет возможно пошло не так?
Модель:
<?php
class Invoicestatus extends \Phalcon\Mvc\Model
{
protected $id;
protected $name;
protected $description;
public function setId($id)
{
$this->id = $id;
return $this;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function setDescription($description)
{
$this->description = $description;
return $this;
}
public function getId()
{
return $this->id;
}
public function getName()
{
return $this->name;
}
public function getDescription()
{
return $this->description;
}
public function initialize()
{
$this->setSchema("invoice");
$this->setSource("invoicestatus");
$this->hasMany(
'Id',
'Invoice',
'InvoiceStatusId',
[
'alias' => 'Invoice',
'foreignKey' => [
'message' => 'The invoice status cannot be deleted because other invoices are using it',
]
]
);
}
public function getSource()
{
return 'invoicestatus';
}
public static function find($parameters = null)
{
return parent::find($parameters);
}
public static function findFirst($parameters = null)
{
return parent::findFirst($parameters);
}
}
?>
контроллер:
<?php
$form = new InvoicestatusForm();
$invoicestatus = new Invoicestatus();
$data = $this->request->getPost();
if (!$form->isValid($data, $invoicestatus)) {
$messages = $form->getMessages();
foreach ($messages as $message) {
$this->flash->error($message);
}
return $this->dispatcher->forward(
[
"action" => "new",
]
);
}
//$invoicestatus->name = $this->request->getPost('name', 'string');
//$invoicestatus->description = $this->request->getPost('description', 'string');
//$success = $invoicestatus->save();
$success = $invoicestatus->save($data, array('name', 'description'));
if($success)
{
$form->clear();
$this->flash->success("Invoice Status successfully saved!");
$this->dispatcher->forward(['action' => 'index']);
}
else
{
$this->flash->error("Following Errors occured:");
foreach($invoicestatus->getMessages() as $message)
{
$this->flash->error($message);
}
$this->dispatcher->forward(['action' => 'new']);
}
?>
Форма:
<?php
class InvoicestatusForm extends Form
{
public function initialize($entity = null, $options = null)
{
if (isset($options['edit']) && $options['edit']) {
$id = new Hidden('id');
} else {
$id = new Text('id');
}
$this->add($id);
$name = new Text('name', ['placeholder' => 'Name']);
$name->setFilters(["striptags","string",]);
$name->addValidators([new PresenceOf(["message" => "Name is required...",])]);
$this->add($name);
$description = new Text('description', ['placeholder' => 'Description']);
$this->add($description);
}
}
?>
Это не NulValidations, которые происходят до проверки и при сохранении. Вы можете либо установить тип столбца NULL в базе данных, либо отключить notNullValidations:
Model::setup(
[
'notNullValidations' => false,
]
);
Других решений пока нет …