En supposant que vous n'avez pas défini un gestionnaire d'URL personnalisée dans votre contrôleur, la valeur par défaut est la suivante:
private static $url_handlers = array(
'$Action//$ID/$OtherID' => 'handleAction',
);
Cela signifie que votre itinéraire sera routetocontroller/action
alors rien après ce sera en option (more info). La première partie de la route serait définie dans la configuration YAML, par exemple:
Director:
rules:
routetocontroller: YourControllerName
Par conséquent, votre contrôleur a besoin d'exposer une action index:
private static $allowed_actions = array('index');
public function index(SS_HTTPRequest $request)
{
// Handle an ID passed
if ($id = $this->urlParams['ID']) {
return $this->doSomethingWithYourId($id);
}
// Otherwise, show all of your data
return $this->renderWith(array('YourTemplateName', array(
'YourDataList' => YourModel::get()
));
}
Et vous pouvez boucle et afficher ensuite dans YourTemplateName.ss
:
<% loop $YourDataList %>
<li><a href="$Link">$Title</a></li>
<% end_loop %>
Ce ne sont que des exemples de points de départ, vous devrez bien sûr l'ajuster à vos besoins.
Très bien, cela fonctionne le seul problème que je l'ai qu'il rend seulement le contenu de la page, pas le cadre. ProgramSchedulePage_Controller étend Page_Controller, mais ne prend pas le modèle de page, aucune idée de comment faire cela ou dois-je faire le modèle "ProgramSchedulePage" un modèle de page complète? – Mi32dogs
@ Mi32dogs peut-être que votre modèle est 'templates/ProgramSchedulePage.ss' - cela remplacera entièrement le modèle de page. Vous devriez le stocker comme 'templates/Layout/ProgramSchedulePage.ss' à la place afin qu'il ne couvre que le contenu –
Je l'avais dans le dossier layout mais il était toujours en train de surcharger le template de la page, j'ai aussi perdu toutes les données de la page. Je l'ai obtenu en obtenant d'abord les données de la page $ dObj = Page :: get() -> byID ('8'); puis rendez-le avec les deux modèles return $ this-> customize ($ dObj) -> renderWith (array ('ProgramSchedulePage', 'page')); ce n'est pas la meilleure solution mais ça marche – Mi32dogs