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);
}
}
?>
答案 0 :(得分:0)
这不是在验证之前和保存时发生的NullValidations。您可以在数据库中设置列类型NULL,也可以通过以下方式禁用notNullValidations:
Model::setup(
[
'notNullValidations' => false,
]
);