Witam
Chciałbym stworzyć walidacje danych umiejscowioną w MVC. W poniższym kodzie walidacje umieściłem w kontrolerze(akcja insert). Mój cały problem sprowadza się do tego miejsca
if(!$validation->isError==0){
//co tutaj zrobic
}else {
$model=$this->loadModel('dish');
$model->insert($_POST);
$this->redirect('?task=dish&action=index');
}
Gdy dane są poprawne to jest ładowany model, który umieszcza ładnie i poprawnie dane w bazie danych.
Lecz co zrobić gdy dane są niepoprawne? W moim założeniu jest żeby po wprowadzeniu błędnych danych wyświetliła się dalej strona z formularzem z informacją o błędnych danych. Więc jak zrobić aby przekazać obiekt $validation do widoku z formularzem tak abym mógł potem w widoku wyciągnąć informacje o błędach
dishcontroller.php
require_once ('controller.php');
require_once ('validator.php');
class DishController extends Controller{
public function index(){
$view=$this->loadView('dish');
$view->index();
}
//laduje widok z formularzem dodania potrawy
public function add(){
$view=$this->loadView('dish');
$view->add();
}
//laduje widok z przegladem potrawy
public function show(){
$view=$this->loadView('dish');
$view->show($_GET['id']);
}
//laduje model ktory umieszcza dane w bazie
public function insert(){
$validation= new Validator;
$validation->MessageText=NULL;
$validation->isError=0;
$dishname=$_POST['dishname'];
$validation->viewMessage();
if(!$validation->CheckString($dishname,2)){
$validation->setMessage('dishname','Nazwa dania jest zbyt krótka');
};
$validation->viewMessage();
if(!$validation->isError==0){
//co tutaj zrobic
}else {
$model=$this->loadModel('dish');
$model->insert($_POST);
$this->redirect('?task=dish&action=index');
}
}
public function delete(){
$model=$this->loadModel('dish');
$model->delete($_GET['id']);
$this->redirect('?task=dish&action=index');
}
};
dishview.php
class DishView extends View{
public function index(){
$dish=$this->loadModel('dish');
$this->set('dishList', $dish->getAll());
$this->render('indexDish','dish/');
}
public function add($obj=null){
$this->render('addDish', 'dish/'); //laduje plik z formularzem addDish.html.php, formularz ten przesyła dane do akcji insert();
}
public function show($id){
$dish=$this->loadModel('dish');
$this->set('dishShow', $dish->getOne($id));
$this->render('showDish', 'dish/');
}
}