- Код: Выделить всё
class Add extends Controller {
function Add(){
parent::Controller();
$this->load->helper(array('form', 'url'));
$this->load->library('validation');
$this->validation->set_error_delimiters('<div class="error">', '</div>');
}
function index(){
$rules=array('Name'=>"trim|required|callback_Name_Check|xss_clean",
'Authors'=>"trim|required|xss_clean",);
$this->get_instance()->validation->set_rules($rules);
$fields=array('Name'=>'Name',
'Authors'=>'Authors');
$this->validation->set_fields($fields);
if($this->validation->run()){
$view_to_show=array('name'=>'success',
'data'=>array('variant'=>'1'));
$this->load->view('layout', $view_to_show);
}
else{
$view_to_show=array('name'=>'AddForm',
'data'=>NULL);
$this->load->view('layout', $view_to_show);
}
}
function Name_Check($str){
if (isnull($str)){
$this->validation->set_message('Введите название книги');
return FALSE;
}
$str=toupper($str);
$this->load->model('books');
$res=$this->books->NameSearch($str);
if ($res==TRUE) return TRUE;
else {
$msg='Найдены следующие ссылки:\n';
foreach ($res->result as $row)
$msg.'<a href="http://eng_books.ua/index.php/show/".<?php echo $row->ID?>\n';
$this->validation->set_message($msg);
return TRUE;
}
}
}
вот код вьюшки:
- Код: Выделить всё
<form id="addform" method="post" action="http://eng_books.ua/index.php/add">
<table class="table">
<tr>
<td>Название</td>
<td><input type="text" id="Name" size="50px" value=<?php echo $this->validation->Name;?>></input></td>
</tr>
<tr>
<td><?=$this->validation->Name_error;?></td>
</tr>
<tr>
<td>Авторы</td>
<td><input type="text" id="Authors" size="50px" value=<?php echo $this->validation->Authors;?>></input></td>
</tr>
<tr>
<td><?=$this->validation->Authors_error;?></td>
</tr>
<tr>
<td>Категория</td>
<td><input type="select" id="Category" size="50px"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Загрузить"</td>
</tr>
</table>
</form>
проблема заключается в том, что валидация в любом случае возвращает пустую форму. Без перезаполнения и без вывода ошибок. Подскажите где пофиксить пожалуйста.
