Modular Extensions - HMVC 5

Каждый топик здесь посвящен конкретной библиотеке или наработкам конкретного проекта

Re: Modular Extensions - HMVC 5

Сообщение FDezign » 28 май 2010, 10:33

Относительно новичок в CI.
Поставил HMVC 5, доволен.
Нужно ограничить доступ к странице.
Использую библиотеку Auth, загруженную по ссылке в вики.
В контроллере пишу:
Код: Выделить всё
if($this->auth->isAuthorised() == false) {
redirect('auth/login');
}
 

С этим все ок. Но после логина хочу вернуть на прежнюю страницу пользователя.
Думал так сохранить (а позже получить), в том же контроллере выше над redirect пишу:
Код: Выделить всё
$this->session->set_flashdata('referrer', $this->uri->uri_string()); 

Но uri_string, как и rsegment, возвращают пустоту.
Скажите, где я ошибся. Как в модуле получить адрес.
Возможно, чего-то я не доставил.
URI подключен.
FDezign
 
Сообщения: 1
Зарегистрирован: 28 май 2010, 10:26

Re: Modular Extensions - HMVC 5

Сообщение tkanoff » 13 авг 2010, 21:19

У меня есть проблема, которую я не могу решить - свое ядро приложения (CodeIgniter).
Привожу код:
Код: Выделить всё
    <?php

    
class Init extends Controller
    
{
        private 
$languageSupport;    // ML support = TRUE/FALOS
        
private $languageSupported;    // List of supported langs

        
function __construct()
        {
            
parent::Controller();

             
$this->languageSupport $this->config->item('ml_support');
            (
$this->languageSupport === TRUE) ? define("_ML_SUPPORT_""supported") : define("_ML_SUPPORT_""not_supported");
            
            
$this->languageSupported $this->config->item('ml_supported');
        }

        function 
index()
        {

        }
        function 
_remap()
        {
            
$segs $this->uri->segment_array();

    foreach (
$segs as $segment)
    {
        echo 
$segment;
        echo 
'<br />';
    }
            
$uriSegment1 strtolower(trim($this->uri->segment(1)));
            if(
$this->uri->total_segments() == 0)
            {
                
define("_LANG_""ru");    
                
$this->load->module($this->config->item('default_page'))->index();
                        return;
            }
            if(
$uriSegment1 != "")
            {
                if(
in_array($uriSegment1$this->languageSupported))
                {
                    
define("_LANG_"$uriSegment1);

                    
$tryToLoad $this->uri->segment(2);

                    if(
$tryToLoad == FALSE)
                    {
                        
$this->load->module($this->config->item('default_page'))->index();
                        return;
                    }
                    if(
$this->uri->segment(3) != "")
                    {
                        
$tryToLoad->$this->uri->segment(3);
                    }
                
//    echo $this->uri->slash_segment(2, 'trailing');
                //    redirect($this->uri->slash_segment(2, 'both'), 'location');
                //    $this->load->module($this->uri->segment(2))->index();
                
}else
                {
                    
define("_LANG_""ru");
                    
                    
$tryToLoad $this->load->module($uriSegment1);
                    if(
$tryToLoad == FALSE)
                    {
                        
$this->load->module($this->config->item('default_page'));
                        return;
                    }
                    if(
$tryToLoad != FALSE)
                    {
                        
$tryToLoad->index();
                    }
                }
            }
        }
    }  



Вопрос - как мне загрузить после проверки нужный контроллер и передать ему его параметры.
Помогите пжл, я все пробовал. :roll:
tkanoff
 
Сообщения: 3
Зарегистрирован: 13 авг 2010, 20:29

Re: Modular Extensions - HMVC 5

Сообщение vladname » 19 авг 2010, 19:32

iniweb писал(а):Ну почему же не в модулях если у меня модуль Comments, который подключаеться к модулям News Blogs Communities Photos и тд, там есть контроллер который работает как отдельный модуль, получаеться что мне нужно разбивать отдельно контроллер и отдельно библиотеку и модель от 1 модуля? :)

расскажи плиз как реализовал комменты для новостей, фоток и прочего. пока не могу придумать как и к чему привязать комменты
vladname
 
Сообщения: 30
Зарегистрирован: 09 дек 2008, 09:20

Re: Modular Extensions - HMVC 5

Сообщение temakolesnikov » 28 авг 2010, 17:12

Здравствуйте.

У меня возникла проблема с использованием данных библиотек.

Немного о проблеме:
Есть один контроллер в каталоге .application/controllers/system.php
Он выполняет инициализацию всего модулей и некоторых базовых библиотек.

Так вот, каким образом получить доступ из контроллера (./application/modules/<module>/controllers/<module>.php) к тем библиотекам, которые вызвал системный (system.php) контроллер, причем вызывать базовую библиотеку из модуля нельзя (!$this->load->library()), а так же, получить доступ к методам других (уже инициализированных из system.php модулей) ?

Я так понимаю надо редактировать библиотеки HMVC 5.
Подскажите пожалуйста, где копать? Что ворошить?

Спасибо за внимание.
temakolesnikov
 
Сообщения: 4
Зарегистрирован: 08 авг 2010, 15:42

Re: Modular Extensions - HMVC 5

Сообщение Tovit » 28 авг 2010, 19:24

Если Вы не можете вызвать загруженную ядром библиотеку из модуля, значит нужно модифицировать HMVC. У меня можно, видимо когда-то я расширял библиотеку HMVC :) . Действительно, уже не помню, но перекроил я в ней многое. Да и не так там все страшно...
Фантазия! Фантазия! Она поможет... не форум!
Аватара пользователя
Tovit
Модератор
 
Сообщения: 1230
Зарегистрирован: 15 фев 2009, 17:18

Re: Modular Extensions - HMVC 5

Сообщение temakolesnikov » 28 авг 2010, 20:09

Да, теперь все нормально, на самом деле я больше тупил чем делал походу..

Для решения достаточно было прописать $this->CI =& get_instance(); в конструкторе класса и работать через $this->CI, как в обычных библиотеках
temakolesnikov
 
Сообщения: 4
Зарегистрирован: 08 авг 2010, 15:42

Re: Modular Extensions - HMVC 5

Сообщение FastJoe » 02 сен 2010, 20:33

А как использование данной библиотеки сказывается на производительности?
FastJoe
 
Сообщения: 35
Зарегистрирован: 08 авг 2010, 21:00

Re: Modular Extensions - HMVC 5

Сообщение Tovit » 03 сен 2010, 03:13

Любой код требует время для выполнения. Библиотека не делает ничего сверхъестественного, не перекачивает десяток другой гигабайт мусора и не считает параллельно число пи до миллиардного знака.
Она делает ровно то, что заявлено. И насколько я могу судить по коду, вполне эффективно.
Фантазия! Фантазия! Она поможет... не форум!
Аватара пользователя
Tovit
Модератор
 
Сообщения: 1230
Зарегистрирован: 15 фев 2009, 17:18

Re: Modular Extensions - HMVC 5

Сообщение helsq » 07 сен 2010, 09:28

Sam Dark 29 ноя 2008, 12:36

Новая версия.

2008.11.04, 5.1.40
modules::run() теперь буферизуется и возвращается.


а можно ли, наоборот, заставить CI не буферизовать вывод модуля?
helsq
 
Сообщения: 1
Зарегистрирован: 07 сен 2010, 09:23

Re: Modular Extensions - HMVC 5

Сообщение Sum » 08 сен 2010, 11:46

подскажите с чем может быть связана ошибка
Fatal error: Class 'CI' not found in /var/www/projects/htdocs/application/libraries/Controller.php on line 9
ругается на
/* create the application object */
CI::instance();

кто встречал?

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

спустя сколько то минут, понял, что банально не отрабатывает autoload.
по'тому class not found, как исправить еще не понял.
Sum
 
Сообщения: 8
Зарегистрирован: 09 июл 2010, 08:18

Re: Modular Extensions - HMVC 5

Сообщение Sum » 09 сен 2010, 08:50

Проблема решена, надо было выключить eAccelerator
с ним система, отказывается работать.
Sum
 
Сообщения: 8
Зарегистрирован: 09 июл 2010, 08:18

Re: Modular Extensions - HMVC 5

Сообщение IbrahimKZ » 16 окт 2010, 19:23

Установил HMVC, работой очень доволен. Запускаю разные контроллеры из главного контроллера, только возникла одна проблемка. Библиотека Parser работает только в главном контроллере, т.е. который находится в папке application/controllers. В дополнительных запускаемых контроллерах, находящихся в папке modules/name_of_module/controllers библиотека Parser не работает. В вики написано, что надо будет переписать Parser. Кто-н. сталкивался с такой проблемой? И что там в Парсере надо дописать? Извините, только недавно стал использовать CI... :?
IbrahimKZ
 
Сообщения: 4
Зарегистрирован: 16 окт 2010, 19:15

Re: Modular Extensions - HMVC 5

Сообщение Cat » 14 ноя 2010, 11:01

установил HMVC и столкнулся с тем, что не удается вызвать контроллер через адресную строку
попытка ввести адрес
www.site.ru/controller

выдает сообщение:
An Error Was Encountered
The URI you submitted has disallowed characters.

это нормальная ситуация или что то можно исправить?

P.S.
в конфиге вроде все верно:
Код: Выделить всё
$config['permitted_uri_chars'] = '- !()a-zA-Zа-яА-Яё0-9~%.,:_+'; 
Cat
 
Сообщения: 7
Зарегистрирован: 01 окт 2010, 15:37

Re: Modular Extensions - HMVC 5

Сообщение bvn » 15 ноя 2010, 10:02

Читать, начиная отсюда viewtopic.php?p=11323#p11323
Мой блог: junkabyss.com
Аватара пользователя
bvn
 
Сообщения: 181
Зарегистрирован: 30 авг 2009, 22:39
Откуда: Полтава, Украина

Re: Modular Extensions - HMVC 5

Сообщение temakolesnikov » 08 дек 2010, 17:04

Здравствуйте, меня интересует, возможно ли реализовать с помощью данной библиотеки автозагрузки модулей (в autoload.php) и соответственно возможность обращение к функциям модуля из других модулей без предварительной загрузки через $this->load->module(), то есть сразу же писать $this->имя_модуля->имя_функции()?

Если да, то намекните в какую сторону копать, дальше разберусь сам.

Спасибо за внимание
temakolesnikov
 
Сообщения: 4
Зарегистрирован: 08 авг 2010, 15:42

Re: Modular Extensions - HMVC 5

Сообщение Tovit » 08 дек 2010, 18:04

"Авто-загрузка модулей" даже звучит как-то странно. Нет, такой возможности нет. Но это не значит, что такое нельзя написать, но только вам известны условия и порядок загрузки.

Подумайте внимательно, действительно ли нужно вам загружать ВСЕГДА целый список модулей. Зачастую, это не нужно.

Если же ответ Нужно, то вы можете поступить умнее — написать __get'ер для загрузки нужных в конкретный момент модулей.
Фантазия! Фантазия! Она поможет... не форум!
Аватара пользователя
Tovit
Модератор
 
Сообщения: 1230
Зарегистрирован: 15 фев 2009, 17:18

Re: Modular Extensions - HMVC 5

Сообщение temakolesnikov » 08 дек 2010, 19:03

Спасибо, попробую работать через __get().

А на счет нужно или не нужно разом разгружать все модули, так у меня в любом случае они будут разом загружаться при инициализации системы в главном файле ($this->load->module(array(1,2,3..,n)), так как они должны как-то прореагировать на запрос пользователя ("реакция" определена в __construct() и может быть разнообразной - от возвращения "ничего" до выполнения sql запросов)

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

А пока, в модулях где "реакция" наиболее затратная, приходиться контролировать факт второй, третей, n-ой загрузки модуля, дабы не выполнять лишних действий.
temakolesnikov
 
Сообщения: 4
Зарегистрирован: 08 авг 2010, 15:42

Re: Modular Extensions - HMVC 5

Сообщение Akylenok » 19 дек 2010, 18:11

Важно: Я прочитал весь топик и wiki, но так и не смог разобраться - просьба не пинать ногами и не посылать ссылкой с текстом "читать отсюда".


Теперь собственно в чем я не смог разобраться:

Скачал готовый пример с wiki - в исходном состоянии работает.
Скопировал модуль welcome и назвал его news.
Обращаюсь к мой_сайт/news - выдается 404.

Что я делаю не так?
Если я в корне все делаю нетак - то просьба объяснить как же нужно делать.

Вообще как я себе представляю работу HMVC:
например сайт мой состоит из "главной страницы", "новостей" и "статей" - это к примеру :)
создаю два модуля соответственно для "новостей" и "статей" - оттуда буду извлекать готовые сформированные "элементы" страницы (подобие виджетов) по созданию/редактированию, размещению и отображению.
далее в родной папке controllers создаю три контроллера "главной страницы", "новостей" и "гостевой книги", эти контроллеры как раз используют эти виждеты для формирования готовой страницы.

Если я полностью неправильно думаю то научите как нужно делать и если можно то готовый примерчик будет очень кстати.
Аватара пользователя
Akylenok
 
Сообщения: 63
Зарегистрирован: 19 июл 2010, 18:22

Re: Modular Extensions - HMVC 5

Сообщение Tovit » 20 дек 2010, 01:13

Если вы скачали минимальный пример с местной вики, то проблема в том, что там нет .htaccess с настройкой для mod_rewrite дабы Apache понимал, как перестраивать ваш вызов (site/news —> site/index.php/news)
Вариант содержимого файла www/.htaccess/
Код: Выделить всё
AddDefaultCharset UTF-8
Options -Indexes
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ ./index.php/$1

Естественно, Apache должен иметь у себя mod_rewrite
Фантазия! Фантазия! Она поможет... не форум!
Аватара пользователя
Tovit
Модератор
 
Сообщения: 1230
Зарегистрирован: 15 фев 2009, 17:18

Re: Modular Extensions - HMVC 5

Сообщение Akylenok » 20 дек 2010, 12:12

Спасобо Tovit

да действительно в минимальном примере отсутствовал этот файл, я и забыл про него)

но вот курьез: оказывается имена модулей не должны совпадать с именами главных контроллеров (которые лежат где и раньше в папке controllers)
я сделал так: основной контроллер назвал news, а модуль назвал news_module и все заработало.

мне это показалось немного мудрёным ))

так и должно быть?
Аватара пользователя
Akylenok
 
Сообщения: 63
Зарегистрирован: 19 июл 2010, 18:22

Пред.След.

Вернуться в Решения, авторский код и библиотеки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0