Bon, et bien dans ma vue qui affiche les pages (view/pages/view.php), j'ai laissé la gestion classique des pages, et j'ai ajouté ceci:
<?php
if ($page->id == 1){
include_once(dirname( __DIR__ ) .'/posts/index.php');
}
?>
Mon inclusion "fonctionne bien", et le fichier view/posts/index.php est bien inclus.
Pour rappel, voici ce que contient ce fichier:
<div>
<div class="row">
<div class="span13">
<div class="page-header">
<h1><?php echo isset($title)?$title:'Le blog'; ?></h1>
</div>
<?php foreach ($posts as $k => $v): ?>
<div class="clearfix">
<h3><?php echo $v->name; ?><small>,<a href="<?php echo Router::url('posts/category/slug:'.$v->catslug); ?>"><?php echo $v->catname; ?></a></small></h3>
<?php echo substr(strip_tags($v->content),0,300); ?>...
</div>
<p style="text-align:right"><a href="<?php echo Router::url("posts/view/id:{$v->id}/slug:$v->slug"); ?>">Lire la suite →</a></p>
<p> </p>
<?php endforeach ?>
<div class="pagination">
<ul>
<?php for($i=1; $i <= $page; $i++): ?>
<li <?php if($i==$this->request->page) echo 'class="active"'; ?>><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li>
<?php endfor; ?>
</ul>
</div>
</div>
<?php require('sidebar.php'); ?>
</div>
</div>
Mais j'ai un paquet d'erreurs:
Undefined variable: posts et Invalid argument supplied for foreach() in... pour la ligne
<?php foreach ($posts as $k => $v): ?>
J'ai également 2 erreurs Object of class stdClass could not be converted to int in... pour cette ligne:
<?php for($i=1; $i <= $page; $i++): ?>
Je comprends bien que le soucis, c'est que j'essaye d'accéder à une vue(posts/index.php) sans passer par son controller puisque je suis sur une action des pages mais... est-ce vraiment impossible à faire?