Как отменить переход на другую страницу при отправке формы и вывести ошибки в html?

215
12 июля 2018, 08:20

при отправке формы, кидает на другую страницу, как вывести, что форма отправилась или есть ошибки, не переходя на новую страницу( на которой еще и ничего нет)?

FeedbackController.php

require_once (MODEL_PATH ."/CategoryModel.php");
class FeedbackController extends Controller
{
private $pageTpl = "/Views/templates/feedback.tpl.php";
public function __construct()
{
    $this->model=new FeedbackModel();
    $this->view= new View();
}
public function index(){
    $this->pageData['title']="Обратная связь";
    $category=CategoryModel::Get_Category();
    $this->pageData['category'] = $category;
    $this->view->render($this->pageTpl,$this->pageData);
}
public function Send_Form()
{   $result=false;
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = $_POST['name'];
        $phone = $_POST['phone'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $name = FeedbackController::clean($name);
        $phone = FeedbackController::clean($phone);
        $email = FeedbackController::clean($email);
        $message = FeedbackController::clean($message);
             $errors=false;
        if (!empty($name) AND !empty($email) AND !empty($phone) AND 
!empty($message) ) {
            if($email = filter_var($email, FILTER_VALIDATE_EMAIL  )){
                $errors[]='Некорректный email';
            }
            if (preg_match("/^\+??[0-9]{6,15}$/", $phone)){
                $errors[]='Некорректный номер';
            }
            if (preg_match("/^[a-zA-ZА-Яа-я]{2,32}$/u", $phone)){
                $errors[]='Некорректное имя';
            }
            $errors[]= " Заполните поля ";
        }
      if($errors == false){
          $theme = 'Новый заказ';
          $letter = 'Данные по заявке:\r\n';
          $letter .= 'Имя:' . $name . '\r\n';
          $letter .= 'Email:' . $email . '\r\n';
          $letter .= 'Телефон:' . $phone . '\r\n';
          $letter .= 'Имя:' . $message . '\r\n';
        $result= mail('samurage15@gmail.com', $theme, $letter);
      }
    }
    }
    public
    function clean($value = "")
    {
        $value = trim($value);
        $value = stripslashes($value);
        $value = strip_tags($value);
        $value = htmlspecialchars($value);
        return $value;
    }
} 

кусок с формой в представлении feedback.tpl.php https://code.re/c5M где подключение к контроллеру с ф-ей сделано:

   <form action="feedback/Send_Form/feedback" method="POST">

route.php

class Routing{
    public static function buildRoute(){
$controllerName="IndexController";
$modelName="IndexModel";
$action = "index";
$route= explode("/",parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH));
$i = count($route)-1;
while($i>0) {
    if($route[$i] != '') {
        if(is_file(CONTROLLER_PATH . ucfirst($route[$i]) . "Controller.php") 
|| !empty($_GET)) {
            $controllerName = ucfirst($route[$i]) . "Controller";
            $modelName =  ucfirst($route[$i]) . "Model";
            break;
        } else {
            $action = $route[$i];
        }
    }
    $i--;
}
require_once CONTROLLER_PATH . $controllerName . ".php";
require_once MODEL_PATH . $modelName . ".php";
$controller = new $controllerName();
$controller->$action();
}
public function errorPage() {
}
}
Answer 1

Это работа ЯваСкрипта. С его помощью можно проверить данные формы - и, если они не прошли проверку, предотвратить сабмит и огорчить юзера.

Самый простой способ:

<form ... onsubmit="if(!test(this)) return false">

где test(f) - функция, проверяющая корректность данных формы f. Она может и огорчить юзера сообщением.

READ ALSO
Вывод рандомных чисел в график

Вывод рандомных чисел в график

Есть простенький график который подключен к базе данныхДля наглядности прописал скрипт для рандомного вывода чисел каждые 5 сек ,но почему-то...

194
Как осуществить выборку из таблицы по id?

Как осуществить выборку из таблицы по id?

Существуют таблицы recipes И users2recipesВ users2recipes записываются recipesId и usersId

164
PHP сохраняет поврежденный файл

PHP сохраняет поврежденный файл

Существует задача: сохранить файл по ссылке с помощью PHP и предоставить к нему доступ в Android приложении

182