2015-05-02 2 views
0

В моем кодеминерном проекте HMVC. Когда я пытаюсь запустить свой первый запрос isset в модулях foreach. Если я раскомментирую код ниже, то пожарная лиса загружает ошибку страницы Соединение было сброшено.Невозможно загрузить страницу с помощью codeigniter

Но если я прокомментирую код, как показано ниже, страница загрузится очень странно.

//if (isset($part[0]) && $this->setting->get($part[0] . '_status')) { 
// $data['modules'][] = Modules::run('catalog/module/'.$part[0].'/index'); 
//} 

По какой-то причине не нравится использовать isset($part[0])

Как код работает

  • $part[0] возвращает на примере имя модуля категории
  • $part[1] возвращает пример номер модуля 66 category.66
  • $this->setting->get($part[0] . '_status') возвращает либо 1, если включен или 0, если инвалидов.

Что может быть причиной не загрузки страницы, когда я раскомментирую код выше. Любые предложения

Контроллер

<?php 

class Column_left extends MX_Controller { 

    public function index() { 
     $this->load->model('catalog/extension/model_extension_extension'); 
     $this->load->model('catalog/design/model_design_layout'); 

     $route = $this->uri->segment(1).'/'.$this->uri->segment(2); 

     // $route outputs like pages/category 

     $layout_id = 0; 

     if (!$layout_id) { 
      $layout_id = $this->model_design_layout->get_layout($route); 
     } 

     if (!$layout_id) { 
      // Setting library autoloaded 
      $layout_id = $this->setting->get('config_layout_id'); 
     } 

     $data['modules'] = array(); 

     $modules = $this->model_design_layout->get_layout_modules($layout_id, 'column_left'); 

     foreach ($modules as $module) { 
      $part = explode('.', $module['code']); 

      echo $part[0]; 

      // Setting library autoloaded 
      if (isset($part[0]) && $this->setting->get($part[0] . '_status')) { 
       $data['modules'][] = Modules::run('catalog/module/'.$part[0].'/index'); 
      } 

      if (isset($part[1])) { 
       $setting_info = $this->model_extension_module->get_module($part[1]); 

       if ($setting_info && $setting_info['status']) { 
        $data['modules'][] = Modules::run('catalog/module/'.$part[0].'/index', $setting_info); 
       } 
      } 
     } 

     // Setting library autoloaded 
     if (file_exists(DIR_TEMPLATE .$this->setting->get('config_template'). '/template/common/column_left_view.php')) { 
      $this->load->view('theme/'.$this->setting->get('config_template').'/template/common/column_left_view', $data); 
     } else { 
      $this->load->view('theme/default/template/common/column_left_view', $data); 
     } 
    } 
} 

Посмотреть

<?php if ($modules) { ?> 
<column id="column-left" class="col-sm-3 hidden-xs"> 
    <?php foreach ($modules as $module) { ?> 
    <?php echo $module; ?> 
    <?php } ?> 
</column> 
<?php } ?> 
+0

Что-нибудь полезное в журнале ошибок? Такие ошибки обычно означают тайм-аут браузера или слишком много переадресаций (которые обычно обнаруживает браузер, поэтому более вероятно тайм-аут). – Rooster

+0

Нет ошибок, показывающих только разрывы страниц, когда я начинаю код – user4419336

+0

просто из любопытства, можете ли вы запустить результаты if без инструкции if? Другими словами, какая строка вызывает таймаут? Это поможет сузить его. – SpYk3HH

ответ

1

После работы на все это после полудня, был в состоянии найти причину проблемы.

В моей папке модулей модулей у меня было 2 контроллера, названных одинаковыми в разных папках, каталоге/категории & модуль/категория. Несмотря на то, что они были в разных папках, один из них переходил на другую и вызывал ошибку загрузки страницы на лисе.

Как я решил проблему. Переименовав контроллер в каталоге подпапок в категории, я обновил страницу, а затем работал.

Я также очистил код здесь.

<?php 

class Column_left extends MX_Controller { 

public function index() { 
    $this->load->model('catalog/design/model_design_layout'); 

    $route = $this->uri->segment(1).'/'.$this->uri->segment(2); 

    $layout_id = 0; 

    if (!$layout_id) { 
     $layout_id = $this->model_design_layout->get_layout($route);  
    } 

    if (!$layout_id) { 
     $layout_id = $this->setting->get('config_layout_id'); 
    } 

    $data['modules'] = array(); 

    $results = $this->model_design_layout->get_layout_modules($layout_id); 

    foreach ($results as $result) { 
     $part = explode('.', $result['code']); 

     if (isset($part[0]) && $this->setting->get($part[0] . '_status')) { 
      $data['modules'][] = Modules::run('catalog/module/'.$part[0].'/index'); 
     } 

     if (isset($part[1])) { 

      $this->load->model('catalog/extension/model_extension_module'); 

      $setting_info = $this->model_extension_module->get_module($part[1]); 
      if ($setting_info && $setting_info['status']) { 
       $data['modules'][] = Modules::run('catalog/module/'.$part[0].'/index', $setting_info); 
      } 
     } 
    } 

    $this->load->view('theme/default/template/common/column_left_view', $data); 
} 
} 
Смежные вопросы