Codeigniter: загрузка другого представления в цикле в соответствии с сегментом URI - PullRequest
0 голосов
/ 27 октября 2010

У меня есть список зданий, которые я загружаю из моей модели.Эти здания изображены в виде петли, на мой взгляд, так:

Контроллер

public function index() {
 $data['buildings'] = $this->Base_Model->getUserBuildings();
 $this->load->view('game', $data); }

Вид

<?php foreach($buildings as $b): ?>
    <div class="building">[...]</div>
<?php endforeach; ?> 

Каждая сборка имеет несколько возможных «действий», таких как «информация», «цена», «цвет».состояние по умолчанию показывает «info».

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

Например, у меня есть фабрика и аптека, по умолчанию оба показываютвкладка "информация".Как, если я нажму на вкладку «цена» в аптеке, открою вкладку «информация» для фабрики И вкладку «цена» для аптеки?

Мои URL выглядят так:

по умолчанию один

участок / здания

показать цену аптеки

участок / здания / цена / аптека

Возможно, мне следует искать решение с частичным представлением, но мне действительно нужен совет или решение;)

Заранее большое спасибо (я тоже извиняюсь за плохой английский)

Ответы [ 2 ]

0 голосов
/ 29 октября 2010

, не зная больше о настройке, сложно сказать, но вам понадобится некоторая условность в вашей функции price ()

информация / ценовые действия получены из базы данных?

если так что-то вроде

<?php foreach($buildings as $b): ?>
    <div class="building">
    <?php if($this->uri->segment(3)==$b['building_name']) {
        echo 'Price';
    } else {
        echo 'Info';
    }
    ?>    
    </div>
<?php endforeach; ?> 

но, как сказано, не зная больше о системе, трудно дать достойный ответ.

0 голосов
/ 27 октября 2010

Примерно так:

$this->Base_Model->getUserBuildingFromWebname($webname);

Тогда в вашем контроллере зданий вы можете добавить это:

public function index( $webname = null )
{
  if( !is_null($webname) )
    $buildingId = $this->Base_Model->getUserBuildingFromWebname($webname);
  else
    $buildingId = null;

  $data["showBuildingDetails"] = $buldingId;

  //the rest of your index() function
}

public function price ( $webname )
{
  return $this->index($webname);
}
...