Bonjour,

je traine toujours avec mon soucis de recherche de fichier,
je passe bien le nom du fichier rechercher a mon controller, mais je n arrive a mettre dans le find la variable 'immat' pour ne faire la recherche que sur cet element afin d'obtenir ensuite un lien que j'afficherai dans ma vue pour pouvoir ouvrir le fichier en cliquat dessus.

j espere que quelqu un pourra m'aider,

d'avance merci

Gilles

<?php
App::uses('AppController','Controller');
App::uses('Folder', 'Utility');
App::uses('File', 'Utility');
Class CgsController extends AppController{
    public function beforeFilter(){
        parent::beforeFilter();
        $this->Auth->allow('index', 'search');
    }
    public function index(){
        // Nouvelle instance de classe avec le répertoire choisi
        $dir = new Folder(WWW_ROOT . 'img');
        // Si un nom est passé par le formulaire
        if (!empty($this->request->data)){
            // Liste des fichiers du repertoire
            $immat = $this->request->data;
            $result = $dir->find('.*\.*');

            $this->set('cgs',$result);
        }
    }
}

2 réponses


ker0x
Réponse acceptée

Ton problème, c'est que ta variable $immat tel quelle est là est une tableau et non pas une valeur. Fait un debug de ton $this->request->data et vois comment il est construit. Normalement tu devrais avoir quelque chose comme :

array(
    'Model' => array(
        'key' => 'value',
        'key2' => 'value2'
        etc..
    )
)

donc ton find ressemblera plus à

$dir->find('.*' . $this->request->data'Cgs']'search'] . '\.*');

ou quelque chose comme çà

gilles40
Auteur

Merci GyZmO,
c'est exactement ce que j'ai trouvé en faisant un debug et j'ai résolu mon probleme avec le code ci-dessous.

merci de ton aide.

Gilles

public function index(){
        if (!empty($this->request->data)){
            //$dir = new Folder(WWW_ROOT . 'img');
            $chemin = (WWW_ROOT . "cg" . DS);// le chemin complet sous la forme "C:\wamp\www\..."
            //$chemin = ("c:\wamp" .DS. "www" .DS. "portail" .DS. "app" .DS. "webroot" .DS. "cg" . DS);// le chemin complet sous la forme "C:\wamp\www\..."
            $filepdf = $chemin.$this->request->data'search']'immat'].".pdf";
            $filetif = $chemin.$this->request->data'search']'immat'].".tif";
            $chemin_local = strstr($chemin, "app" .DS. "webroot" .DS.'cg');// je supprime tout ce qu'il y a avant mon répertoire, en gros : "C:\wamp\www\"
                $chemin_local = str_replace("\\", "/", $chemin_local); //je change de sens les séparations !!!
            $filenamepdf = $chemin_local.$this->request->data'search']'immat'].".pdf";
            $filenametif = $chemin_local.$this->request->data'search']'immat'].".tif";
            if (file_exists($filepdf)){
                $filetest = true;
                    $filename = $filenamepdf;
                $this->set('cgs',$filename);
            }else if(file_exists($filetif)){
                $filetest = true;
                $filename = $filenametif;
                $this->set('cgs',$filename);
            }else{
                $filetest = false;
                $this->Session->setFlash("La carte grise n'existe pas !!!", "flash", array('class' => "error"));
            return $this->redirect(array('action' => 'index'));
            }
        }