Jump to content

Impossible d'ajouter un CustomController


Recommended Posts

Bonjour,
 
Je rencontre quelques soucis avec Presta.
 
J'ai recherché toute l'après-midi une solution, et j'en ai trouvé un paquet ! Mais pas les bonnes :'(
 
Donc voilà :
 
Premièrement ! J'ai créé un custom.php dans / et mis les permissions à 644

<?php

require(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();
Tools::redirect('index.php?controller=custom'.($_REQUEST ? '&'.http_build_query($_REQUEST, '', '&') : ''), __PS_BASE_URI__, null, 'HTTP/1.1 301 Moved Permanently');

Deuxièmement ! J'ai créé un CustomController dans /controller/front/CustomController.php et réglé les permissions à 644

<?php                                                                                           

class CustomControllerCore extends FrontController
{
	public $php_self = 'custom';

	public function initContent()
	{
		parent::initContent();
		$this->setTemplate(_PS_THEME_DIR_.'custom.tpl');
	}
}

?>

Troisèmement ! J'ai évidemment créé un custom.tpl dans /theme/personalTheme/custom.tpl et réglé les permissions à 604

<h1>MY WONDERFUL CUSTOM PAGE</h1>

Quatrièmement ! Je suis allé dans : /cache et j'ai supprimé class_index.php
 
Cinquièmement ! Je suis allé dans /cache/smarty et j'ai supprimé tout sauf index.php
 
Sixièmement ! Dans le backOffice, j'ai été dans l'onglet SEO et j'ai ajouté le lien: custom
 
Septièmement ! Dans le backofffice, j'ai été dans performances, et nettoyé le cache (Et d'ailleurs dans cette page j'ai tout réglé sur OFF)
 
Huitièmement ! Nettoyer le cache de mon navigateur
 
Neuvièmement ! Me tuer avec ma souris

Et après toutes ces étapes j'ai toujours cette erreur quand je veux aller sur : mywebsite.com/custom
 

Fatal error: Class 'CustomController' not found in [/size].../web/classes/controller/Controller.php on line [/size]135

 
Oh et j'allais oublier, j'ai aussi essayé ça : https://www.prestashop.com/forums/topic/250826-adding-a-new-page-controller-issue/?do=findComment&comment=1542578
 
Toujours ce problème :'(
 
Merci d'avance pour votre aide
 
P.S : J'utilise Prestashop 1.6.0.11

Edited by UsrNems (see edit history)
Link to comment
Share on other sites

Vous avez mis le fichier dans /controller/front/ ? Il devrait plutôt se trouver dans /controllers/front/ ; dans un premier temps. :)

Excusez moi c'est une erreur d'écriture de ma part, c'est bien controllers/front/ ;)
  • Like 1
Link to comment
Share on other sites

Bonjour à tous !

J'ai essayé encore quelques trucs :

  • Placer mon CustomController dans overrides/front
  • Rentrer manuellement mon Custom controller dans class_index.php (Mais bien évidemment dès que ça recompile... Bye bye)
  • Recommencer toutes les manips citées plus haut et vérifié que je les ai bien éxécutées

Des questions dans le vent qui pourraient (avec un coup de chance) être la réponse :

  • L'encodage des pages doit bien être en UTF-8 ?
  • Y-a-t-il un mode d'envoi via ftp qu'il faut préférer ?
  • Le fait d'être sur un mutualisé OVH peut il changer quelque chose ?

Merci pour vos réponses ;)

Link to comment
Share on other sites

Je me permet de remonter le sujet.

 

J'ai essayé de nouvelles choses, j'ai appris que le ?> en bas des fichiers php pouvait causer des problème, je l'ai retiré mais pas de résultats :/

 

Là je commence réellement à être à court d'idée ? Personne pour me sauver ?

Link to comment
Share on other sites

Bien sûr ;)

 

Alors on pars du principe que je suis sur la racine et que j'ai quatre fichiers (le .php a la racine, le Controller.php dans controller, le Controller.php dans override et le .tpl dans theme)

 

  • /custom.php
<?php

require(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();
Tools::redirect('custom'.($_REQUEST ? '&'.http_build_query($_REQUEST, '', '&') : ''), __PS_BASE_URI__, null, 'HTTP/1.1 301 Moved Permanently');
  • /controllers/front/CustomController.php
<?php

class CustomControllerCore extends FrontController
{
	public $php_self = 'custom';

	public function initContent()
	{
		parent::initContent();
		
		$this->addCSS(_THEME_CSS_DIR_.'custom.css');

		$this->setTemplate(_PS_THEME_DIR_.'custom.tpl');
	}
}

  • /override/controllers/front/CustomController.php
<?php

class CustomControllerCore extends FrontController
{
	public $php_self = 'custom';

	public function initContent()
	{
		parent::initContent();
		
		$this->addCSS(_THEME_CSS_DIR_.'custom.css');

		$this->setTemplate(_PS_THEME_DIR_.'custom.tpl');
	}
}
  • /themes/specialdev/custom.tpl
{capture name=path}{l s='Custom'}{/capture}


<div class="container">
	<div class="row">
		..... Contenu de ma page en html ......
	</div>
</div>

Voilà, c'est tout ce que j'ai.

 

Un petit rappel de ce que j'ai tenté :

 

  • Changer les permissions
  • Vider la cache via l'admin
  • Vidé le cache via FTP (class_index.php)
  • Supprimé le cache smarty
  • Aller dans SEO et ajouter le lien custom
  • Nettoyer le cache de mon navigateur
  • Ajouter ça : https://www.prestashop.com/forums/topic/250826-adding-a-new-page-controller-issue/?do=findComment&comment=1542578
  • Ajouter / Supprimer Core dans le nom de ma classe
  • Ajouter / Supprimer le controller dans /overrides
  • Rentrer manuellement mon controller dans class_index.php (fonctionne mais pas durable)
  • Supprimer la fermeture ?> qui apparemment causerait des problèmes parfois

Je crois que 'est à peu près tout

 

Si vous avez besoin d'autre chose je peut vous le fournir ;)

Et encore merci pour votre aide :)

Link to comment
Share on other sites

Evite d'avoir class CustomControllerCore à la fois dans l'override et dans controllers/front/, met soit l'un l'autre (dans l'override c'est mieux) mais sinon, franchement je ne vois pas ce qui peut poser problème, as tu essayé en local ?

Link to comment
Share on other sites

Evite d'avoir class CustomControllerCore à la fois dans l'override et dans controllers/front/, met soit l'un l'autre (dans l'override c'est mieux) mais sinon, franchement je ne vois pas ce qui peut poser problème, as tu essayé en local ?

 

Quand je laisse seulement dans overrides il me dit :

 

 

Warning: include_once(.../web/controllers/front//CustomController.php): failed to open stream: No such file or directory in .../web/classes/Dispatcher.php on line 285

 

Warning: include_once(): Failed opening '.../web/controllers/front//CustomController.php' for inclusion (include_path='.../web/tools/htmlpurifier/standalone:.:/usr/local/php5.4/lib/php') in .../web/classes/Dispatcher.php on line 285

 

Fatal error: Class 'CustomController' not found in .../web/classes/controller/Controller.php on line 135

 

C'est normal de double // ?

Link to comment
Share on other sites

je viens de tester (en local) sur 1.6.0.14 avec
 

ma_boutique.com/override/controllers/front/CustomController.php

<?php
class CustomControllerCore extends FrontController
{
public $php_self = 'custom';
public function initContent()
{
parent::initContent();
$this->context->smarty->assign('xxx', 'OK');
$this->setTemplate(_PS_THEME_DIR_.'custom.tpl');
}
}

ma_boutique.com/custom.php 

<?php


require(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();
Tools::redirect('custom'.($_REQUEST ? '&'.http_build_query($_REQUEST, '', '&') : ''), __PS_BASE_URI__, null, 'HTTP/1.1 301 Moved Permanently');

et ma_boutique.com/themes/default-bootstrap/custom.tpl

{capture name=path}{l s='Custom'}{/capture}

<div class="container">
<div class="row">
{$xxx}
</div>
</div>

Je supprime le fichier ma_boutique.com/cache/class_index.php, ensuite je vais sur ma_boutique.com/custom.php, je suis redirigé sur ma_boutique.com/index.php?controller=custom et j'ai un joli OK qui s'affiche dans la page (dans le center_column)

 

 

Si ça ne fonctionne pas chez toi (en ligne) essaye en local...

Link to comment
Share on other sites

oui, mais lequel...

sauf si tu as transféré les fichiers dans un mauvais dossier, je ne vois pas trop

Malheureusement j'ai beau regarder maintes et maintes fois, ils sont bien à leur place :/

J'ai recommencé trois fois tous les tests que j'ai pu faire :/

 

A la limite le seul truc que j'aurais pu louper c'est le Rewriterule dans le htacess, mais je doute qu'il soit en cause ici :/

 

Fait intéressant : 

 

En fait quand je change les permissions de mon fichier (Qui est de base en 604 alors que les autres sont en 644), dès que j'actualise le dossier je me rends compte que le changement n'est pas pris en comtpe

Edited by UsrNems (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...