bonjour
j'ai un problème le voici
code php de mon MediasController.php :
class MediasController extends AppController{
function admin_index($post_id){
$d'medias'] = $this->Media->find('all',array(
'conditions' => array('post_id' => $post_id)
));
$this->set($d);
}
}
cake me renvoie une erreur comme quoi il reconnais $post_id
aidez moi svp
Bonjour,
Tu renseigne bien le post_id dans ton url quand t’accède a ta page ?
oui quand tu te rend sur l'url qui relie ton admin_index est ce que tu renseigne ton post_id ?
Exemple d'url : /admin/medias/post_id
Tu remplace post_id par ton numero de poste.
Est ce que tu fait sa ?
bonjour
voici les lignes d'erreur
Missing argument 1 for MediasController::admin_index() [APP\Controller\MediasController.php, line 5]
Undefined variable: post_id [APP\Controller\MediasController.php, line 31]
Undefined variable: id [APP\Controller\MediasController.php, line 34]
Undefined variable: post_id [APP\View\Medias\admin_index.ctp, line 8]
Invalid argument supplied for foreach() [APP\View\Medias\admin_index.ctp, line 8]
<?php
class MediasController extends AppController {
function admin_index($post_id) {
if ($this->request->is('post')) {
$data = $this->request->data;
$dir = IMAGES . date('Y');
if (!file_exists($dir))
mkdir($dir, 0777);
$dir .= DS.date('m');
$f = explode('.', $data'Media']'file']'name']);
$ext = '.'.end($f);
$filename = Inflector::slug(implode('.', array_slice($f, 0, -1)), '-');
$success = $this->Media->save(array(
'name' => $data'Media']'name'],
'url' => date('Y').'/'.date('m').'/'.$filename.$ext,
'post_id' => $post_id
));
if ($success) {
//envoye de l'image
move_uploaded_file($data'Media']'file']'tmp_name'], $dir.DS.$filename.$ext);
} else {
$this->Session->setFlash("L'image n'est pas au bon format", 'notif', array('type' => 'error'));
}
}
$d'medias'] = $this->Media->find('all', array(
'conditions' => array('post_id' => $post_id)
));
$this->set($id);
}
}
?>
Ba selon tes erreurs qui apparaisse tu ne renseigne pas le post_id dans ton url donc la variable n'existe pas.
Je sais pas si tu a compris l’intérêt de mettre une variable dans la fonction, quand tu met une variable dans la fonction cela veut dire quel sera défini dans l'url
Warning (2): move_uploaded_file(C:\Program Files\EasyPHP-5.3.9\www\tuto\app\webroot\img\2012\03\Autumn-Leaves.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory [APP\Controller\MediasController.php, line 24]
<table>
<tr>
<th>Image</th>
<th>Nom</th>
<th>Action</th>
</tr>
<?php foreach($medias as $k => $v): $v = current($v);?>
<tr>
<td><?php echo $this->Html->image($v'url']) ?></td>
</tr>
<?php endforeach ?>
</table>
<h3>Ajouter une image</h3>
<?php echo $this->Form->create('Media',array('type'=>'file'));?>
<?php echo $this->Form->input('file',array('label'=>"Image (format png / jpg)",'type' => 'file'));?>
<?php echo $this->Form->input('name',array('label'=>"Nom de l'image" ));?>
<?php echo $this->Form->end('Ajouter');?>
je suis désolé je commence que cette année sur php (je suis plutôt) dev cfm
Pas de soucis tout le monde commence un jour.
Donc déjà d’après l'erreur si je ne me trompe pas il ne trouve pas le dossier ou tu veut enregistré l'image.
D'aprés ce que je vois ici:
$dir = IMAGES . date('Y');
if (!file_exists($dir))
mkdir($dir, 0777);
$dir .= DS.date('m');
Tu vérifie si le dossier avec l’année en cour existe et si il n'existe pas tu le crée or tu veut placé ton image dans le dossier de l'année en cour et du mois en cour. Donc dans ton traitement tu a oublier de précisé lors de la vérification si le dossier du mois en cour existé et si il n’existe pas tu le crée.
Sa serai plus sa si je me trompe pas:
$dir = IMAGES . date('Y').DS.date('m');
if (!file_exists($dir)){
mkdir($dir, 0777, true);
}
Je ne manipule pas souvent la création de dossier en php donc si des personne vois que je me trompe corriger moi.
Test sa et dit moi des nouvelles.
bonjour
je vais essayer avec ta proposition
mais je me demande si cé pas à la ligne 30 de mon controller medias (j'ai oublier le i de $id)
et encore mille fois merci a vous tous