Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) 1 2 [3]  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как устранить ошибку: «call_user_func_array() expe, Как устранить ошибку: «call_user_func_array() expects parame
bespeco  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43330
На форуме: 3 месяца, 1 день
Карма:




Всё понимаю , а сказать не могу ! Так я разбираюсь в php.
Вот файл router.php
<?php

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

class Router
{

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

private $routes;

/**
* Конструктор
*/

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

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

/**
* Возвращает строку запроса
*/

private function getURI()
{
if (!empty($_SERVER['REQUEST_URI'])) {
return trim($_SERVER['REQUEST_URI'], '/');
}
}


/**
* Метод для обработки запроса
*/

public function run()
{
// Получаем строку запроса
$uri = $this->getURI();

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

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

// Получаем внутренний путь из внешнего согласно правилу.
$internalRoute = preg_replace("~$uriPattern~", $path, $uri);
echo $uri; //Если ввести не правильный адрес в строке
//пример:www.eshopper.ru/12345 результат 12345
//это есть не существующий адрес!правильно?
//Здесь можно перенаправить результат на страницу 404?
//хостинг виртуальный и не поддерживает страницы ошибок.

// Определить контроллер, 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;
}
}
}
}

}


PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bespeco  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43330
На форуме: 3 месяца, 1 день
Карма:




Просто ужас, делал одно сломал другое . Кто подскажет что это за полоса вверху страницы , как обнаружить ошибку. user posted image

Это сообщение отредактировал bespeco - 11.09.2016 - 19:24
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 8 дней


Цитата (bespeco @ 11.09.2016 - 15:21)
Кто подскажет что это за полоса вверху страницы , как обнаружить ошибку

Скорее всего это что то попало выше доктайпа, посмотри HTML в браузере.

Покажи, что в роутах прописано у тебя. Там вся бяда.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bespeco  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43330
На форуме: 3 месяца, 1 день
Карма:




Цитата (twin @ 12.09.2016 - 11:28)
Цитата (bespeco @ 11.09.2016 - 15:21)
Кто подскажет что это за полоса вверху страницы , как обнаружить ошибку

Скорее всего это что то попало выше доктайпа, посмотри HTML в браузере.

Покажи, что в роутах прописано у тебя. Там вся бяда.

    // Управление заказами:    
'admin/order/update/([0-9]+)' => 'adminOrder/update/$1',
'admin/order/delete/([0-9]+)' => 'adminOrder/delete/$1',
'admin/order/view/([0-9]+)' => 'adminOrder/view/$1',
'admin/order' => 'adminOrder/index',
// Управление пользователями:
'admin/registered' => 'adminRegistered/index',

А код вот:user posted image
Почему-то head не раскрывается при нажатии на треугольничек!user posted image
На этой странице раскрывается и треугольничек даже есть .

Это сообщение отредактировал bespeco - 12.09.2016 - 13:02
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bespeco  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43330
На форуме: 3 месяца, 1 день
Карма:




Свершилось чудо , открыл в Notepad++ файлы страниц и сохранил без BOOM. Отключил в роутере
                // Если метод контроллера успешно вызван, завершаем работу роутера
if ($result != null) {
break;

И выдало ошибку :
Cannot modify header information - headers already sent by
По этой ошибке и нашел решение здесь:
http://ru.stackoverflow.com/questions/2845...already-sent-by
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Гость_Илья  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Для решения этой проблемы:

Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'SiteController' does not have a method 'actionIndexcsite'


Нужно заменить
~$uriPattern~
на
~^$uriPattern$~


И будет счастье ;)
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
xavierz  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 1
Пользователь №: 43508
На форуме: 1 месяц, 12 дней
Карма:




Столкнулся сегодня с данной проблемой и решил поделиться ее решением (вдруг кому-то пригодится).

Здесь дело скорее всего в экшене SiteController'а (actionContact). Если он ничего не возвращает, то в переменную $result, которую определяем как
$result = call_user_func_array(array($controllerObject, $actionName), $parameters);
ничего и не возвращается. Следовательно условие, следующее сразу за ним
if ($result != null) {
break;
}

не выполняется, т.е. не выполняется break. Поэтому продолжается работа цикла, который на последнем шаге проверяет выполнение условия
if (preg_match("~$uriPattern~", $uri))
а т.к. $uriPattern на последнем шаге будет равен '' (пустая строка), то условие будет верным, ну и дальше появляется наша проблема.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) 1 2 [3]  Ответ в темуСоздание новой темыСоздание опроса