Вход • Регистрация

Техника правильного разведения состояний модуля

  • 07 января 2015 г.
  • Как правильно запретить конструктору отрисовывать страницу по умолчанию если выполняются признаки обращения к подстранице без явной ссылки.
    Далее на пальцах:
    файл модуль.php
    Код

    public function init() {
    // $this->rewrite_variable_names = array('page');

    if ($this->diafan->_route->edit === $this->diafan->_users->id){
    $this->model->show_cart();
    }
    $this->model->show_module();
    }

    значит по умолчанию выполняется show_module(), а если в URL приходит edit с id пользователя то show_cart().
    проблема в том что по завершении show_cart() опять же вываливаемся из условия и выплняется show_module().

    Вопрос как не допустить выполнения show_module если отработал show_cart?

    P.S. Марина, Виталий очень жду не бросайте пожалуйста мня с этой думой. Буду весьма признателен и модуль обязательно добавлю в магазин расширений.
    • 07 января 2015 г.
    • а чего пытаешься добиться, если не секрет?
      • 08 января 2015 г.
      • Пытаюсь сделать модуль для WSDL сервиса.

        Сейчас встала задача сделать так чтобы человек выбравший несколько вещей, мог перейти на страницу, которая отображала бы все его выбраные вещи с их количеством и стоимостью имела общий ценник по списку и кнопку "Оформить".
        Получается некое подобие корзины.

        Дальше будет задача формирования заказа.
  • 07 января 2015 г.
  • Сообственно проблема в том что трейсить не удобно падает в исключене сокета , немогу понять почему 404 вываливается.
  • 08 января 2015 г. , редакция: 08 января 2015 г.
  • Значится так includes/init.php > function module
    Код
    ...
    foreach ($this->_route->variable_names_site as $name)
    {
    if ($this->_route->$name && ! in_array($name, $this->module->rewrite_variable_names) && $name != 'dpage')
    {
    Custom::inc('includes/404.php');
    }
    }
    ...

    Если использовать переменные URL из списка http://www.diafan.ru/dokument/full-manual/developers/api/route/
    то срабатывает выше описанный кусок. Как в таком случае добавить свою переменную не внося правки в init.php
    Ведь при введение неописаной переменной 404 вываливается где-то в другом месте не успев передать управление в $this->model->show_cart();
    • 08 января 2015 г.
    • Добавление конструкции в конструктор контроллера
      Код

      $this->rewrite_variable_names[] = 'pcart';

      ничего не даёт так как вываливается в 404 ещё до подключения модуля.
      • 08 января 2015 г.
      • В этом случае срабатывает
        Код

        $_GET["rewrite"] = implode("/", $rewrite_array);
        if (! $this->rewrite($_GET["rewrite"], $arguments_in_url))
        {
        Custom::inc('includes/404.php');
        }

        в includes/init.php > prepare_rewrite()
    • 16 января 2015 г.
    • Чтобы тут не падало, нужно в контроллере модуля указывать что используем переменную URL.
      Код
      public function init() {
      $this->rewrite_variable_names[] = 'edit';
      ...
  • 16 января 2015 г.
  • Блин теряется мысль. Не совсем понятно к какой записи какая зацеплена если ветвление очень сильное. Надо с этим что-то делать. На досуге как нибудь черкну пожелание о том чтобы создать элемент управления типа якорь для перехода к родительской записи от дочерней.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум