Bonjour, je suis actuellement entrain de crée un plugin, et j'ai un problème car dans tout mes link ou url je doit mettre

'plugin' => false

Et c'est assez chiant, surtout pour le formulaire car cela ne fonctionne pas et je suis toujours envoyer vers le controller du plugin alors que j'aimerais l'être dans mes controller par defaut !

Est-ce que vous avez une petite idée de commment je pourrais faire pour que ça ce fasse de façon automatique !?

9 réponses


Ciloe
Réponse acceptée

Ouaip. Perso je vois pas d'autre solutions désolé :/

A part CTRL+c ; CTRL+v je sais pas trop ^^.

Si tu as une fonction en afterfind là ou tu crée certaine url ou link, tu l'ajoute ici, et ça va simplifier au mieux ton système.

if(!empty($data'slug'])){
    $data'link'] = array(
        'controller' => 'users',
        'action' => 'view',
        'plugin' => false,
        'slug' => $data'slug']
    );
}
if(!empty($data$k]'User']'id'])){
    $data$k]'User']'link'] = array(
        'controller' => 'users',
        'action' => 'view',
        'plugin' => false,
        'slug' => $data$k]'User']'slug']
    );
}

Par exemple ici, mettre un

'plugin' => false

ça me dérange pas, parce que le lien ce crée de façon automatique, mais par exemple dans mon layout par defaut c'est chiant ! Car tout mon site est déjà codé donc je doit modifier tout mes link et url !

N'as tu pas activé quelque chose en lançant ton plugin ? Car par défaut, l'option plugin devrait être à false et tu ne devrais pas avoir à réécrire cette valeur.

Bah en fait c'est la 1ere fois que je créer un plugin donc il y a surement des choses que je ne sais pas ! :/

Peux tu nous montrer la structure de ton plugin, ainsi que la façon dont tu l'appelles stp ?

J'appelle mon plugin comme ça :

CakePlugin::loadAll(array(
    'Forum' => array('routes' => true)
));

ok, du coup regarde dans ton fichier routes.php, si tu ne réécris pas une route par défaut. Ton problème pourrait venir de là.

J'ai deux routes.php lui par defaut :

<?php
/**
 * Routes configuration
 *
 * In this file, you set up routes to your controllers and their actions.
 * Routes are very important mechanism that allows you to freely connect
 * different urls to chosen controllers and their actions (functions).
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link http://cakephp.org CakePHP(tm) Project
 * @package app.Config
 * @since CakePHP(tm) v 0.2.9
 * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
 */
/**
 * Here, we are connecting '/' (base path) to controller called 'Pages',
 * its action called 'display', and we pass a param to select the view file
 * to use (in this case, /app/View/Pages/home.ctp)...
 */
    Router::connect('/', array('controller' => 'posts', 'action' => 'index'));
/**
 * ...and connect the rest of 'Pages' controller's urls.
 */
    //PostsController.php
    Router::connect('/article/:slug-:id',array('controller'=>'posts','action'=>'view'),array('pass'=> array('id','slug'), 'id'=>'[0-9]+','slug' =>'[a-z0-9\-]+'));
    Router::connect('/article/category/:slug',array('controller'=>'posts','action'=>'category'),array('pass'=> array('slug'), 'slug' =>'[a-z0-9\-]+'));
    //UsersController.php
    Router::connect('/membre/',array('controller'=>'users','action'=>'index'));
    Router::connect('/membre/:slug',array('controller'=>'users','action'=>'view'),array('pass'=> array('slug'), 'slug' =>'[a-z0-9\-]+'));
/**
 * Load all plugin routes. See the CakePlugin documentation on
 * how to customize the loading of plugin routes.
 */
    CakePlugin::routes();
/**
 * Load the CakePHP default routes. Only remove this if you do not want to use
 * the built-in default routes.
 */
    require CAKE . 'Config' . DS . 'routes.php';

et lui de mon plugin :

<?php
Router::connect('/forum/',array('controller'=>'forum','action'=>'index', 'plugin' => 'forum'));
Router::connect('/forum/:slug-:id',array('controller'=>'forum','action'=>'forum', 'plugin' => 'forum'),array('pass'=> array('id','slug'), 'id'=>'[0-9]+','slug' =>'[a-z0-9\-]+'));
Router::connect('/forum/topic/:id',array('controller'=>'forum','action'=>'topic', 'plugin' => 'forum'),array('pass'=> array('id'), 'id'=>'[0-9]+'));