0

Выложил сайт на хостинг, затем возникла проблема при регистрации на сайте, после заполнения и нажатия кнопки "регистрация" страница просто обновляется, сообщение о успешной регистрации не выходит, форма сама остаётся заполненной. До этого всё проверял в Denwer, там регистрация проходила успешно. В журнале на хостинге, показывает такую ошибку при регистрации: mod_fcgid: stderr: PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'SiteController' does not have a method 'actionIndextsite' in /var/www/vhosts/tddsv.ru/tddsv/components/Router.php on line 81, referer: https://tddsv.ru/user/register/. Не понимаю от куда взялся этот метод actionIndextsite. По сути должен вызываться actionIndex. Могли вы пожалуйста помочь ?

Router.php

<?php

/**

  • Класс Router
  • Компонент для работы с маршрутами

*/ class Router {

/**
 * Свойство для хранения массива роутов
 * @var array
 */
private $routes;


/**
 * Конструктор
 */
public function __construct()
{
    // Путь к файлу с роутами
    $routesPath = ROOT . '/config/routes.php';

    // Получаем роуты из файла
    $this-&gt;routes = include($routesPath);
}

/**
 * Возвращает строку запроса
 */
private function getURI()
{
    if (!empty($_SERVER['REQUEST_URI'])) {
        return trim($_SERVER['REQUEST_URI'], '/');
    }
}

/**
 * Метод для обработки запроса
 */
public function run()
{
    // Получаем строку запроса
    $uri = $this-&gt;getURI();

    // Проверяем наличие такого запроса в массиве маршрутов (routes.php)
    foreach ($this-&gt;routes as $uriPattern =&gt; $path) {

        // Сравниваем $uriPattern и $uri
        if (preg_match(&quot;~$uriPattern~&quot;, $uri)) {

            // Получаем внутренний путь из внешнего согласно правилу.
            $internalRoute = preg_replace(&quot;~$uriPattern~&quot;, $path, $uri);

            // Определить контроллер, action, параметры

            $segments = explode('/', $internalRoute);

            $controllerName = array_shift($segments) . 'Controller';
            $controllerName = ucfirst($controllerName);

            $actionName = 'action' . ucfirst(array_shift($segments));

            $parameters = $segments;

            // Подключить файл класса-контроллера
            $controllerFile = ROOT . '/controllers/' .
                    $controllerName . '.php';

            if (file_exists($controllerFile)) {
                include_once($controllerFile);
            }

            // Создать объект, вызвать метод (т.е. action)
            $controllerObject = new $controllerName;

            /* Вызываем необходимый метод ($actionName) у определенного
             * класса ($controllerObject) с заданными ($parameters) параметрами
             */
            $result = call_user_func_array(array($controllerObject, $actionName), $parameters);

            // Если метод контроллера успешно вызван, завершаем работу роутера
            if ($result != null) {
                break;
            }
        }
    }
}

}

SiteController

<?php

/**

  • Контроллер CartController

*/ class SiteController {

/**
 * Action для главной страницы
 */
public function actionIndex()
{
    // Список категорий для левого меню
    $categories = Category::getCategoriesList();

    // Список последних товаров
    $latestProducts = Product::getLatestProducts(6);

    // Список товаров для слайдера
    $sliderProducts = Product::getRecommendedProducts();

    // Подключаем вид
    require_once(ROOT . '/views/site/index.php');
    return true;
}

0 Answers0