2011-08-11 2 views
1

J'ai une table de base de données appelée messages qui a « id, titre, limaces et contenu »CakePHP: Enregistrer le titre infléchi dans une colonne slug

Je veux remplir automatiquement la colonne slug avec une version fléchie du titre que a été entré lors de la création ou de la modification du post. Ainsi, par exemple, si je créais un post intitulé "Bienvenue dans mon blog", le slug suivant serait enregistré dans la base de données pour ce post: "Welcome_to_my_Blog".

Je présume que c'est quelque chose que vous feriez dans le contrôleur?

Quelqu'un peut-il aider? Merci

+0

Découvrez [cet article] (http://42pixels.com/blog/slugs-ugly-bugs-pretty-urls) pour une autre approche – Ross

Répondre

1

-je utiliser le CakeDC Utils plugin, il a un comportement « Sluggable » et que vous définissez simplement le nom du champ de la limace et il permettra d'économiser une limace pour vous automatiquement à partir du champ name (vous pouvez spécifier un autre champ si vous avez besoin). Une fois que vous avez laissé tomber dans votre dossier plugins, voici ma configuration:

public $actsAs = array(
    'Utils.Sluggable' => array(
     'label' => 'name', 
     'method' => 'multibyteSlug', 
     'separator' => '-' 
    ) 
); 

Assurez-vous que vous avez un champ slug dans votre base de données.

0

vous pouvez le faire dans le contrôleur ou le modèle, lorsque vous enregistrez la publication.

0

Je n'utiliserais pas de slugs (techniquement) pour pointer vers le contenu. Vous êtes probablement mieux d'utiliser l'ID et d'inclure le slug dans l'URL à des fins de référencement uniquement. Ceci peut facilement être réalisé si nécessaire en utilisant la méthode Inflector :: slug() intégrée à Cake.

Voir aussi mon post ici: CakePHP: Use post title as the slug for view method

Questions connexes