Bonjour,
Suivant le tuto faire une site en cakePHP.
voici la partie Controller :
// Controller/PagesController générer par défaut !
<?php
/**
* Static content controller.
*
* This file will render views from views/pages/
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package app.Controller
* @since CakePHP(tm) v 0.2.9
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
App::uses('AppController', 'Controller');
/**
* Static content controller
*
* Override this controller by placing a copy in controllers directory of an application
*
* @package app.Controller
* @link http://book.cakephp.org/2.0/en/controllers/pages-controller.html
*/
class PagesController extends AppController {
/**
* This controller does not use a model
*
* @var array
*/
public $uses = array();
/**
* Displays a view
*
* @param mixed What page to display
* @return void
* @throws NotFoundException When the view file could not be found
* or MissingViewException in debug mode.
*/
public function display() {
$path = func_get_args();
$count = count($path);
if (!$count) {
return $this->redirect('/');
}
$page = $subpage = $title_for_layout = null;
if (!empty($path[0])) {
$page = $path[0];
}
if (!empty($path[1])) {
$subpage = $path[1];
}
if (!empty($path$count - 1])) {
$title_for_layout = Inflector::humanize($path$count - 1]);
}
$this->set(compact('page', 'subpage', 'title_for_layout'));
try {
$this->render(implode('/', $path));
} catch (MissingViewException $e) {
if (Configure::read('debug')) {
throw $e;
}
throw new NotFoundException();
}
}
}
// Controller/PostsController :
<?php
class PostsController extends AppController
{
public $helpers = array('Html', 'Form', 'Session');
public $components = array('Session');
public function index()
{
$this->set('posts', $this->Post->find('all'));
}
public function view($id)
{
if (!$id)
{
throw new NotFoundException(__('Post invalide'));
}
$post = $this->Post->findById($id);
if (!$post)
{
throw new NotFoundException(__('Post invalide'));
}
$this->set('post', $post);
}
et la partie Model :
// Model/Post :
<?php
class Post extends AppModel
{
public function beforeSave($options = array())
{
if(empty($this->data'Post']'slug']) && isset($this->data'Post']'slug']) && !empty($this->data'Post']'title']))
$this->data'Post']'slug'] = strtolower(Inflector::slug($this->data'Post']'title'],'-'));
return true;
}
}
J'ai utilisé le controller PostsController pour mes fonctions : add, édit, delete, mais je ne comprends pas pourquoi ne pas utiliser le Model Page ainsi que le Controller PagesController, pour les actions liée au pages ?
J'espère avoir été assez clair, en gros j'aurais bien voulus séparer les Model Page et Post, hors ici je met la définition des slug dans post... J'aurais aimer dans page et comme ça dans Page, je peut aussi mettre tous ce qui concerne la pagination, les slug etc. Est ce propre ?
merci à tous,