Здравейте, изграждам си логин форма с фреймуорка на gatakka. В модела си правя валидация а също и проверки дали съществува такъв имейл и парола в базата данни, и ако нещо не е наред изкарвам някаква грешка. В случая грешките ми излизат под самата форма, а аз искам да се визуализират в нея. Ето и кодовете.
default_layout
LoginView
LoginController
LoginModel
default_layout
Код:
<!DOCTYPE HTML>
<html>
<head>
<title>Beta Site Login Page</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="http://localhost/SiteBeta/public/css/login.css">
</head>
<body>
<?= $this->getLayoutData('body'); ?>
</body>
</html>
LoginView
Код:
<div class="container">
<form id="signup" method="post" >
<div class="header">
<h3>Sign Up</h3>
<p>You want to fill out this form</p>
</div>
<div class="sep"></div>
<div class="inputs">
<input type="email" placeholder="e-mail" autofocus name="email" />
<input type="password" placeholder="Password" name="pass" />
<a id="submit" onclick="document.getElementById('signup').submit();">SIGN UP</a>
</div>
</form>
</div>
LoginController
Код:
namespace controllers;
class Login extends \application\BaseController {
public function bar() {
$view = $this->_view; //Това е инстанцията на класа View
$view->appendToLayout('body', 'LoginView'); //Добавям лейаута
$view->display('layouts/default_layout'); //Визуализирам
$dataEmail = $this->_normalize->post('email'); //Взимам данните от пост, може и да нормализирам но в случая не го правя
$dataPass = $this->_normalize->post('pass'); //Взимам от пост
$model = new \models\LoginModel(); //Инстанция на модела
$model->do_something($dataEmail, $dataPass); //Функцията в която валидирам и изкарвам грешките
}
}
LoginModel
Код:
namespace models;
class LoginModel extends \application\DatabaseStatements {
public function __construct($dbConnection = 'default') {
parent::__construct($dbConnection);
}
public function do_something($dataEmail, $dataPass) {
$validate = new \application\Validation();
$validate->setRule('email', $dataEmail);
$validate->setRule('minlength', $dataPass, 5);
$validate->validate();
if ($validate->validate() == TRUE) {
$sql = $this->prepare('SELECT email,pass FROM login')->execute()->fetchAllAssoc();
foreach ($sql as $row) {
if ($dataEmail != $row['email']) {
echo 'There is no such email!';
break;
} elseif ($dataPass != $row['pass']) {
echo 'Your password is not correct!';
break;
}
}
} else {
foreach ($validate->getErrors() as $key => $value) {
if ($value == 'email') {
echo 'Your email is not valid!';
} elseif ($value == 'minlength') {
echo 'Your password is too short!';
}
}
}
}
}