使用PyroCMS 1.3.1我已经构建了一个模型,它几乎是所包含的联系人模型的复制粘贴版本,但有一些调整。当正确输入所有字段时,一切都按预期工作。如果遗漏某个字段或填写不正确,则表单不会提交 - 正如预期的那样。
然而,我似乎无法获得输出的表单验证消息,这让我发疯。我确定我错过了一些非常基本的东西,所以如果有人能指出来我会很感激。
查看文件(form.php)包含此
<?php if (validation_errors()): ?>
<div class="error-box">
<?php echo validation_errors(); ?>
</div>
<?php elseif (isset($messages['error'])): ?>
<div class="error-box">
<p><?php echo $messages['error']; ?></p>
</div>
<?php endif; ?>
Controller(plugin.php)看起来像这样
class Plugin_mycustommodule extends Plugin {
private $rules = array(
array(
'field' => 'firstname',
'label' => 'lang:mycustommodule_firstname_label',
'rules' => 'required|trim|max_length[80]'
),
/* ... snip ... */
array(
'field' => 'license',
'label' => 'lang:mycustommodule_license_label',
'rules' => 'required'
)
);
public function __construct()
{
$this->lang->load('mycustommodule');
}
function form()
{
$this->load->library('form_validation');
$this->load->helper('form');
$this->form_validation->set_rules($this->rules);
// If the user has provided valid information
if ($this->form_validation->run())
{
/* ... Custom processing here ... */
// The try to send the email
if ($this->_send_email())
{
$message = $this->attribute('confirmation', lang('mycustommodule_sent_text'));
// Store this session to limit useage
$this->session->set_flashdata('success', $message);
redirect(current_url());
}
else
{
$message = $this->attribute('error', lang('mycustommodule_error_message'));
$data['messages']['error'] = $message;
}
}
// Set the values for the form inputs
foreach ($this->rules as $rule)
{
$form_values->{$rule['field']} = set_value($rule['field']);
}
$data['form_values'] = $form_values;
return $this->module_view('mycustommodule', 'form', $data, TRUE);
}
答案 0 :(得分:0)
事实证明,当我在自定义CodeIgniters语言文件时,我必须搞砸了form_validation_lang.php
的上传,因为所有条目都是空的,即$lang['required'] = '';
所以基本上验证器查找错误消息,发现一个空字符串,它被输出修剪掉了。怀疑是愚蠢的事,只是不在我预期的地方。
让我们希望这篇文章可以帮助别人解决问题。