Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 11h20   #1
Futur Membre du Club
 
nicolas lefebvre
Inscription : mai 2010
Messages : 72
Détails du profil
Informations personnelles :
Nom : nicolas lefebvre

Informations forums :
Inscription : mai 2010
Messages : 72
Points : 18
Points : 18
Par défaut pbr de tableau avec sfYaml

slt,

voila j aimerai modifier le ficher settings et plus particulièrement check_lock:
j'ai créé une class maintenance voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 * Description of maitenance
 *
 * @author nlefebvre
 */
class Maintenance extends BaseForm {
 
    public function configure()
    {
 
$this->widgetSchema['maintenance'] = new sfWidgetFormChoice(array(
             'choices'  => Maintenance::getStatusChoices(),
 
 
             'multiple' => false, 'expanded' => true));
    }
 
 public function getStatusChoices()
  {
    return self::$choices;
  }
    static public  $choices = array(
 
    false =>'No',true => 'yes'
 
 
  );
    }
?>
voici le fichier action:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public function executeIndex(sfWebRequest $request)
  {
 
      $this->mt= new Maintenance();
if ($request->isMethod('post')) // On vérifie que l'on a bien fait en post
    { 
 
  $app_config_file = sfConfig::get('sf_app_config_dir')."/settings.yml";
$config_values = sfYaml::load($app_config_file);
$config_values['all']['.settings']['check_lock']= $choices  ; // à titre d'exemple
$content = sfYaml::dump($config_values);
file_put_contents($app_config_file, $content);
 
  }
}
mais sa me marque plain d'érreur :
Code :
1
2
3
4
5
6
7
Notice: Undefined variable: choices in /Applications/MAMP/htdocs/cquesnel/apps/backend/modules/statistique/actions/actions.class.php on line 27
 
Warning: file_put_contents(/Applications/MAMP/htdocs/cquesnel/apps/backend/config/settings.yml) [function.file-put-contents]: failed to open stream: Permission denied in /Applications/MAMP/htdocs/cquesnel/apps/backend/modules/statistique/actions/actions.class.php on line 29
 
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/cquesnel/apps/backend/modules/statistique/actions/actions.class.php:27) in /usr/lib/php/symfony/response/sfWebResponse.class.php on line 336
 
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/cquesnel/apps/backend/modules/statistique/actions/actions.class.php:27) in /usr/lib/php/symfony/response/sfWebResponse.class.php on line 357
si qqun peu m'aider merci d'avance
nlefebvre1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 14h13   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Je ne sais pas ce que tu essayes de faire.

Mais je suis sur que tu te complique la vie d'une manière extraordinaire.

Pourrais-tu, exceptionnellement, décrire ce que tu veux faire, mais sans ligne de code ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 18h26   #3
Membre régulier
 
Guillaume M.
Inscription : décembre 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Guillaume M.

Informations forums :
Inscription : décembre 2010
Messages : 58
Points : 81
Points : 81
Si le but est de faire un "mode maintenance" a ton application, à activer lors des mises à jours par exemple, il existe un moyen bien plus simple :
http://www.funstaff.ch/2009/08/14/pa...s-mises-a-jour

et pour gérer tout ca la tache qui va bien :
http://blog.netha.fr/2010/12/symfony...pres-taches-2/
gmarsay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 22h58   #4
Futur Membre du Club
 
nicolas lefebvre
Inscription : mai 2010
Messages : 72
Détails du profil
Informations personnelles :
Nom : nicolas lefebvre

Informations forums :
Inscription : mai 2010
Messages : 72
Points : 18
Points : 18
Par défaut pbr de tableau avec sfYaml

slt,

voilà j'ai une apllication de manipulation yaml qui tourne bien de front=>front de Back=>back mais lorsque j'essai de passé de back=>front alors il me dis
Code :
Fatal error: Cannot use string offset as an array in /Applications/MAMP/htdocs/cquesnel/apps/backend/modules/essai/actions/actions.class.php on line 25
voici le code action
Code :
1
2
3
4
5
6
7
8
9
10
11
12
   public function executeIndex(sfWebRequest $request)
  {$this->mt2 = new Maintenance();
    if ($request->isMethod('post')) // On vérifie que l'on a bien fait en post
 
 
  $app_config_file = sfConfig::get('sf_frontend_config_dir')."/settings.yml";
$config_values = sfYaml::load($app_config_file);
$config_values['all']['.settings']['check_lock'] =$request->getPostParameter('maintenance'); // ligne 25
$content = sfYaml::dump($config_values);
file_put_contents($app_config_file, $content);
 
  }
quand sa pass de front=>front $app est
Code :
1
2
 
  $app_config_file = sfConfig::get('sf_app_config_dir')."/settings.yml";
alors je me dis qu'il y a peu estre un autre chemin? help
nlefebvre1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 11h37   #5
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Je ne suis pas très sur de ce que tu cherches a faire.

Par contre, dans ton action tu as des commandes qui n'ont rien à faire. Je ne vois réellement pas ce que ce code
Code :
1
2
3
4
5
6
 
  $app_config_file = sfConfig::get('sf_frontend_config_dir')."/settings.yml";
$config_values = sfYaml::load($app_config_file);
$config_values['all']['.settings']['check_lock'] =$request->getPostParameter('maintenance'); // ligne 25
$content = sfYaml::dump($config_values);
file_put_contents($app_config_file, $content);
fait dans une action.


Après, mais je brode sur ce que je n'ai pas compris, j'ai l’impression que tu veux basculer du fontend au backend par une action.

Ceci n'est pas réalisable. Le frontend et le backend sont deux applications distinctes, elle ne partage presque rien, sauf les données et le dossier lib/ et ces enfants. Il n'est pas possible de passer de l'une à l'autre.

Soit tu as deux applications distincte avec deux authentification, soit tu veux tout dans une application et tu ne fais pas de backend.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 13h58   #6
Futur Membre du Club
 
nicolas lefebvre
Inscription : mai 2010
Messages : 72
Détails du profil
Informations personnelles :
Nom : nicolas lefebvre

Informations forums :
Inscription : mai 2010
Messages : 72
Points : 18
Points : 18
merci pour ta réponse. Je cherche a fais un bouton radio dans le banckend pour mettre le frontend en maintenance si t'a le script sa m'intéresse.

Et si je fais un plugin ?
nlefebvre1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 14h12   #7
Membre régulier
 
Guillaume M.
Inscription : décembre 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Guillaume M.

Informations forums :
Inscription : décembre 2010
Messages : 58
Points : 81
Points : 81
J'ai posté une réponse à une question similaire à cette adresse : (edit par Michel Rotta le 16/02/2011 à 17:48 discussion supprimée, les messages sont au dessus, dans cette même discution).

Après tu as deux solutions, soi tu utilises une tache (comme l'exemple du deuxieme lien) et tu appels cette tache dans ton appli ; soi tu gère toi meme la création/suppression du fichier .lck dans ton appli
gmarsay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 17h17   #8
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Tu as déjà posté la réponse au même demandeur qui nous a fais deux demandes...

J'ai jeté un oeil et la solution me semble un brin compliquée. Un brin compliquée parce que symfony 1.4 gère déjà ce type de traitement.

En effet tu as une commande "symfony disable" qui permet de mettre l'application "hors service". Il y a aussi un "symfony enable" qui lui la rend active.

Pour mettre en et hors service il crée ou supprime un fichier dans le dossier data de l'application. Donc si tu le crée toi, depuis une action, tu auras le même résultat.

Essaye depuis la ligne de commande pour voir le nom du fichier et son contenu.

Tu peux personnaliser le module et l'action lancé durant la maintenance dans le fichier factories.yml.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 17h25   #9
Futur Membre du Club
 
nicolas lefebvre
Inscription : mai 2010
Messages : 72
Détails du profil
Informations personnelles :
Nom : nicolas lefebvre

Informations forums :
Inscription : mai 2010
Messages : 72
Points : 18
Points : 18
bien snif.... je sais pas mettre une action post sur un service
nlefebvre1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 17h39   #10
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Citation:
Envoyé par nlefebvre1 Voir le message
...mettre une action post sur un service
Une maxime dans developpez.net est : Aide toi et la communauté t'aidera.

Méfie toi, ici tu as des vieux (dans mon genre) à qui il faut expliquer les choses en détail et calmement, si non, leurs (mon) vieux cerveau ne comprend rien à ce que tu veux faire.

J'imagine ce que POST est, mais je n'en suis pas sur. Et qu'elle est donc ce service ?

Si tu veux être aidé, sois plus claire dans ce que tu demandes.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 17h59   #11
Membre régulier
 
Guillaume M.
Inscription : décembre 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Guillaume M.

Informations forums :
Inscription : décembre 2010
Messages : 58
Points : 81
Points : 81
Citation:
Envoyé par Michel Rotta Voir le message
Tu as déjà posté la réponse au même demandeur qui nous a fais deux demandes...

J'ai jeté un oeil et la solution me semble un brin compliquée. Un brin compliquée parce que symfony 1.4 gère déjà ce type de traitement.

En effet tu as une commande "symfony disable" qui permet de mettre l'application "hors service". Il y a aussi un "symfony enable" qui lui la rend active.

Pour mettre en et hors service il crée ou supprime un fichier dans le dossier data de l'application. Donc si tu le crée toi, depuis une action, tu auras le même résultat.

Essaye depuis la ligne de commande pour voir le nom du fichier et son contenu.

Tu peux personnaliser le module et l'action lancé durant la maintenance dans le fichier factories.yml.
Ok pour les symfony project:enable/disable, en effet le résultat est le même, la seule différence est qu'avec la méthode que j'ai cité plus haut un superadmin (de sfDoctrineGuardUser) aura quand même accès à l'application désactivé. Je ne pense pas que symfony gère un comportement similaire d'origine.
gmarsay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h04   #12
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
lol, non.

Là tu en demande trop.

D'autant qu'il faut déjà qu'il s’authentifie. Donc qu'il y ait une partie non négligeable du code qui tourne.

Je ne sais pas quel est l'application sur laquel tu travail, mais a-t-elle une partie publique qui doit être désactivée ou est-ce uniquement la partie semi publique qui doit être désactivée (celle qui demande une authentification) ?

Et comment, sur la partie publique, savoir qui consulte (admin ou simple user) ? A-t-il la possibilité de s’authentifier avant d'y aller ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h11   #13
Futur Membre du Club
 
nicolas lefebvre
Inscription : mai 2010
Messages : 72
Détails du profil
Informations personnelles :
Nom : nicolas lefebvre

Informations forums :
Inscription : mai 2010
Messages : 72
Points : 18
Points : 18
voici j'ai essayer de m'expliquer plus clairement "sachet que je fais du mieux que je peu" .

je sais que la commande
Code :
 php symfony project:disable ENV APPLICATION
met le site en maintenance.

Mais se que je cherche c'est faire un bouton depuis le backend qui appel la commande
Code :
 php symfony project:disable ENV APPLICATION
Ou encore un exemple un bouton qui fais un symfony cc
nlefebvre1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h11   #14
Membre régulier
 
Guillaume M.
Inscription : décembre 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Guillaume M.

Informations forums :
Inscription : décembre 2010
Messages : 58
Points : 81
Points : 81
J'utilise la maintenance pour interdire l'accès au frontend lors des grosses mises à jours. Les superadmins qui souhaitent accèder au frontend pendant une maintenance doivent se connecter via le backend.
gmarsay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h14   #15
Membre régulier
 
Guillaume M.
Inscription : décembre 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Guillaume M.

Informations forums :
Inscription : décembre 2010
Messages : 58
Points : 81
Points : 81
Citation:
Envoyé par nlefebvre1 Voir le message
voici j'ai essayer de m'expliquer plus clairement "sachet que je fais du mieux que je peu" .

je sais que la commande
Code :
 php symfony project:disable ENV APPLICATION
met le site en maintenance.

Mais se que je cherche c'est faire un bouton depuis le backend qui appel la commande
Code :
 php symfony project:disable ENV APPLICATION
Ou encore un exemple un bouton qui fais un symfony cc
Admettons que la tache que tu cherches à executer soit dans la class testTask, il suffit d'ajouter ce code à ton action (avec les paramètres qui vont bien dans le run() si besoin) :

Code :
1
2
3
4
 
 chdir(sfConfig::get('sf_root_dir'));
 $task = new testTask(sfContext::getInstance()->getEventDispatcher(), new sfFormatter());
 $task->run(array(), array());
Je ne suis pas certains en revanche que sa soit une méthode très "propre".
gmarsay est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h40.


 
 
 
 
Partenaires

Hébergement Web