CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 07-11-2014 20:52:44

hamdalaye
Chouquette
Date d'inscription: 02-11-2014
Messages: 1

Problème Controller

Bonjour,

Je débute dans cake et je bloque sur ce problème depuis une semaine :

Contexte : Création d'un raccourcisement d'url (suivi du tuto de grafikart)
Version : 2.5.5
DB : Postgres

Controller : LinksController.php
Model : Link.php
View : add-success.ctp / add.ctp

Dans ma view j'ai un formulaire :

Code: php

  1. <h1>Raccourcir un lien</h1>
  2.  
  3. <?= $this->Form->create('Link'); ?>
  4.   <?= $this->Form->input('url', array('label' => 'Votre lien', 'placeholder' => 'http://monlien.domain')); ?>
  5. <?= $this->Form->end('Raccourcir le lien'); ?>

Une fois soummis, le controlleur va traiter
Dans mon controlleur j'ai :

Code: php

  1. class LinksController extends AppController {
  2.   // methode pour ajouter un lien
  3.   public function add() {
  4.     // si post
  5.     if($this->request->is('post')) {
  6.  
  7.       // recherche si un lien n'existe pas déjà
  8.       $link = $this->Link->findByUrl($this->request->data['Link']['url']);
  9.       if(empty($link)) {
  10.         // je crée le lien et l'enregistre
  11.         $this->Link->create($this->request->data, true);
  12.         if($this->Link->save(null, true, array('url'))) {
  13.           $id = $this->Link->id;
  14.           $this->set('id',$id);
  15.           //$this->set(compact('id'));
  16.           $this->render('add-success');
  17.         }
  18.       // sinon lien non ernegistré
  19.       } else {
  20.         $id = $link['Link']['id'];
  21.         $this->set('id',$id);
  22.         //$this->set(compact('id'));
  23.         $this->render('add-success');
  24.       }  
  25.     }
  26.   }

Jusque là pas de souci, une fois le lien soummis il me renvoie vers une vue add-success :

Code: php

  1. <h1>Bravo</h1>
  2.  
  3. <p>Votre lien à bien été raccourci</p>
  4.  
  5. <p>
  6.   <a href="<?= $this->Html->url(array('action' => 'view', 'id' => $id)); ?>" class="button">
  7.     <?= $this->Html->url(array('action' => 'view', 'id' => $id), true); ?>
  8.   </a>
  9. </p>

En appuyant sur le button il est censé m'appeler la méthode view dans le controlleur avec comme paramètre l'id mais problème ici.

Code: php

  1.   // methode appelé pour rediriger vers le site correspondant à l'url
  2.   public function view($id) {
  3.     $link = $this->Link->findById($id);
  4.  
  5.     if(empty($link)) {
  6.       throw new NotFoundException()
  7.     }
  8.     return $this->redirect($link['Link']['url'], 301);
  9.  
  10.   }
  11. }

Au lieu de m'appeler le controlleur view, il va chercher un controlleur avec comme nom l'url que j'ai entré.

Mon lien sur la barre d'adresse: http://localhost/RaccourcissementURLFoireux/cakephpv3/links/www.google.com

Contenu de l'erreur :

Missing Method in LinksController

Error: The action www.google.com is not defined in controller LinksController

Error: Create LinksController::www.google.com() in file: app\Controller\LinksController.php.

<?php
class LinksController extends AppController {


    public function www.google.com() {

    }

}

Notice: If you want to customize this error message, create app\View\Errors\missing_action.ctp
Stack Trace

    CORE\Cake\Routing\Dispatcher.php line 191 → Controller->invokeAction(CakeRequest)
    CORE\Cake\Routing\Dispatcher.php line 165 → Dispatcher->_invoke(LinksController, CakeRequest)
    APP\webroot\index.php line 108 → Dispatcher->dispatch(CakeRequest, CakeResponse)


J'ai revu plusieurs fois le tuto et je ne parviens pas à joindre la personne qui à réalisé le tuto.

Si vous avez une idée de ce que peut être le problème, ça m'aiderait beaucoup, merci.

Hors ligne

 

#2 10-11-2014 10:03:49

spout
Cooker
Date d'inscription: 18-12-2010
Messages: 1899

Re: Problème Controller

Hors ligne

 

Pied de page des forums

Propuls� par FluxBB
Traduction par FluxBB.fr