CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 11-01-2016 19:40:51

Rastaf
Chouquette
Date d'inscription: 27-10-2015
Messages: 1

Cakephp 3.1.6 Génération sitemap

Bonjour,
Je me tourne vers la communauté car depuis peu je rencontre un problème et je sèche.

Mon objectif est de créer un fichier sitemaps.xml généré par cakephp

Hors, depuis le passage à la version 3.1.6 je rencontre des erreurs.

Afin de configurer cakephp pour la génération d’un fichier sitemaps.xml je modifie plusieurs fichiers :

Modification du fichier : Config/routes.php
Création du fichier     : Src/Controller/SitempasController.php
Création du fichier     : Template/Sitemaps/xml/index.ctp




Config/routes.php
Rajout du code suivant:

Code: php

  1. Router::extensions(['rss', 'xml']);
  2. Router::connect('/sitemaps', array('controller' => 'Sitemaps', 'action' => 'index'));

Src/Controller/SitempasController.php
Rajout du code suivant :

Code: php

  1. namespace App\Controller;
  2. use App\Controller\AppController;
  3. use Cake\Event\Event;
  4. use Cake\I18n\Time;
  5.  
  6. class SitemapsController extends AppController{
  7.     public function beforeFilter(Event $event)
  8.     {
  9.         parent::beforeFilter($event);
  10.     }
  11.     var $name = 'Sitemaps';
  12.     var $uses = array('Projets');
  13.     var $components = array('RequestHandler');
  14.  
  15.     function index (){
  16.         $this->loadModel('Projets');
  17.         $projets  = $this->Projets->find()->order(['id ASC']);
  18.         $this->set(compact('projets'));
  19.     }
  20. }

Template/Sitemaps/xml/index.ctp
Rajout du code suivant:

Code: php

  1. echo '<?xml version="1.0" encoding="UTF-8" ?> ';?>
  2. <urlset     xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  3.             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.             xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
  5.            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
  6.     <url>
  7.       <loc>
  8.           <?php
  9.           echo 'http://'. $this->Url->build([
  10.               'controller' => 'Pages',
  11.               'action' => 'accueil',
  12.           ]);
  13.           ?>
  14.       </loc>
  15.       <changefreq>weekly</changefreq>
  16.       <priority>1.0</priority>
  17.     </url>
  18. </urlset>

Lorsque je vais sur mon url monsite/sitemaps.xml
Je rencontre l’erreur suivante :

Code: php

  1. ( ! ) Fatal error: Call to a member function toArray() on string in /var/www/awesome/testCakePhp/vendor/cakephp/cakephp/src/Utility/Xml.php on line 260
  2. Call Stack
  3. # Time  Memory  Function  Location
  4. 1 0.1513  1451352 Cake\Error\BaseErrorHandler->wrapAndHandleException( )  .../BaseErrorHandler.php:0
  5. 2 0.1513  1451432 Cake\Error\BaseErrorHandler->handleException( ) .../BaseErrorHandler.php:157
  6. 3 0.1513  1451608 Cake\Error\ErrorHandler->_displayException( ) .../BaseErrorHandler.php:173
  7. 4 0.1542  1502408 Cake\Error\ExceptionRenderer->render( ) .../ErrorHandler.php:144
  8. 5 0.1554  1531072 Cake\Error\ExceptionRenderer->_outputMessage( ) .../ExceptionRenderer.php:194
  9. 6 0.1554  1531480 Cake\Controller\Controller->render( ) .../ExceptionRenderer.php:322
  10. 7 0.1560  1533752 Cake\View\SerializedView->render( ) .../Controller.php:611
  11. 8 0.1560  1533752 Cake\View\XmlView->_serialize( )  .../SerializedView.php:87
  12. 9 0.1560  1535024 Cake\Utility\Xml::fromArray( )  .../XmlView.php:144
  13. 10  0.1560  1537544 Cake\Utility\Xml::_fromArray( ) .../Xml.php:233
  14. 11  0.1561  1539696 Cake\Utility\Xml::_createChild( ) .../Xml.php:306
  15. 12  0.1561  1542224 Cake\Utility\Xml::_fromArray( ) .../Xml.php:349
  16. 13  0.1562  1545024 Cake\Utility\Xml::_createChild( ) .../Xml.php:302
  17. 14  0.1562  1547784 Cake\Utility\Xml::_fromArray( ) .../Xml.php:349
  18. Call to a member function toArray() on string /testCakePhp/sitemaps.xml 500 /var/www/awesome/testCakePhp/vendor/cakephp/cakephp/src/Error/BaseErrorHandler.php 92 handleFatalError Cake\Error\BaseErrorHandler -> 1 Call to a member function toArray() on string /var/www/awesome/testCakePhp/vendor/cakephp/cakephp/src/Utility/Xml.php 260 Cake\Error\{closure} Cake\Error\BaseErrorHandler -> [internal] ??

Si vous avez des pistes pour corriger le problème, je suis preneur, sinon je suis curieux de savoir comment vous générez vos sitemap.
Merci d'avance
Rastaf

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr