Кажется, вы не понимаете, как применить MVC к вашей структуре.Представьте это следующим образом:
Контроллеры представляют некоторые аспекты вашего приложения, с которыми пользователи могут взаимодействовать.Например, у меня может быть контроллер items
, который позволяет пользователям создавать, читать, обновлять или удалять items
.Вся логика взаимодействия с items
обрабатывается этим контроллером (то есть он вызывает модель items
и отображает необходимые представления).
В вашем случае это звучит так, как будто вы строите контроллер pages
это обрабатывает отображение контента для определенных страниц, которые пользователь может вызвать.Таким образом, ваш контроллер может выглядеть примерно так:
class Page extends CI_Controller {
public function index()
{
// Logic to render home page
}
public function about()
{
// Logic to render the about page
}
// ... etc ...
Представления могут быть немного сложнее, когда вы имеете дело со сложными сайтами, которые перекрываются.Один из самых полезных приемов, которые я обнаружил на этом пути, - использование библиотеки библиотек для уменьшения избыточности.Это тот, который я использую все время: http://williamsconcepts.com/ci/codeigniter/libraries/template/reference.html.Используя библиотеку шаблонов, вы можете легко определить макет, который включает в себя ваш верхний и нижний колонтитулы, а затем просто передать часть для содержимого, которое вы хотите отобразить.
Когда вы хотите разобраться с логикой в чем-то вроде меню,все, что вам нужно сделать, это передать переменную с именем страницы, а затем выполнить базовый PHP-рендеринг меню.
// Say we pass in a variable called $current to our view
// $current contains the name of the current page
// So say $current = 'About' for this example.
$sitemenu = array(
array('/', 'Home'),
array('/about', 'About'),
array('/help', 'Page 2'),
array('/contact', 'Page 3')
); ?>
<nav>
<ul>
<?php foreach( $sitemenu as $page) { ?>
<?php if($current == $page[1]) { ?>
<li class="current"><a href="<?php echo $page[0]; ?>"><?php echo $page[1]; ?></a></li>
<?php } else { ?>
<li><a href="<?php echo $page[0]; ?>"><?php echo $page[1]; ?></a></li>
<?php } ?>
<?php } ?>
</ul>
</nav>
Надеюсь, это поможет!