Salut ! J'ai fait un blog avec cakephp, et quand j'essaie de faire la modification ça me retourne une erreur comme telle : strtolower() expects parameter 1 to be string, array given [CORE\Cake\Network\CakeRequest.php, line 496], j'ai essayé de modifier sauf que ça ne marche toujours pas. Donc si vous pouvez m'aider à resoudre cela.
Merci!!!!!!!!!!!!!
Bonjour.
Si tu nous montrait le code concerné, nous pourrions peut-être t'aider.
Solution trouvée! Votre contribution m'a beaucoup aidée, grâce à elle, j'ai résolu mon problème. Merci beaucoup. Passez un bon dimanche! Encore merci
Merci ! Voici la solution :
public function edit($id = null) {
if (!$id) {
throw new NotFoundException(__('Invalid post'));
}
$post = $this->Post->findById($id);
if (!$post) {
throw new NotFoundException(__('Invalid post'));
}
public function edit($id = null) {
if (!$id) {
throw new NotFoundException(__('Invalid post'));
}
$post = $this->Post->findById($id);
if (!$post) {
throw new NotFoundException(__('Invalid post'));
}
//if ($this->request->is(array('post', 'put'))) {
if($this->request->is('post') || $this->request->is('put')){
$this->Post->id = $id;
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash(__('Your post has been updated.'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Unable to update your post.'));
}
if (!$this->request->data) {
$this->request->data = $post;
}
}
if($this->request->is('post') || $this->request->is('put')){
$this->Post->id = $id;
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash(__('Your post has been updated.'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Unable to update your post.'));
}
if (!$this->request->data) {
$this->request->data = $post;
}
}
Merci d'avoir réagit à mon problème . Voici le code de la mdification : public function edit($id = null) {
if (!$id) {
throw new NotFoundException(__('Invalid post'));
}
$post = $this->Post->findById($id);
if (!$post) {
throw new NotFoundException(__('Invalid post'));
}
if ($this->request->is(array('post', 'put'))) {
$this->Post->id = $id;
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash(__('Your post has been updated.'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Unable to update your post.'));
}
if (!$this->request->data) {
$this->request->data = $post;
}
}
Et en voici l'erreur:
strtolower() expects parameter 1 to be string, array given [CORE\Cake\Network\CakeRequest.php, line 496]
Voici le code qui fait la modification :
public function edit($id = null) {
if (!$id) {
throw new NotFoundException(__('Invalid post'));
}
$post = $this->Post->findById($id);
if (!$post) {
throw new NotFoundException(__('Invalid post'));
}
if ($this->request->is(array('post', 'put'))) {
$this->Post->id = $id;
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash(__('Your post has been updated.'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Unable to update your post.'));
}
if (!$this->request->data) {
$this->request->data = $post;
}
}
Et l'erreur renvoiée :
strtolower() expects parameter 1 to be string, array given [CORE\Cake\Network\CakeRequest.php, line 496]
la fonction où il y al'erreur:
public function is($type) {
$type = strtolower($type);
if (!isset($this->_detectors[$type])) {
return false;
}
$detect = $this->_detectors[$type];
if (isset($detect['env'])) {
if (isset($detect['value'])) {
return env($detect['env']) == $detect['value'];
}
if (isset($detect['pattern'])) {
return (bool)preg_match($detect['pattern'], env($detect['env']));
}
if (isset($detect['options'])) {
$pattern = '/' . implode('|', $detect['options']) . '/i';
return (bool)preg_match($pattern, env($detect['env']));
}
}
if (isset($detect['param'])) {
$key = $detect['param'];
$value = $detect['value'];
return isset($this->params[$key]) ? $this->params[$key] == $value : false;
}
if (isset($detect['callback']) && is_callable($detect['callback'])) {
return call_user_func($detect['callback'], $this);
}
return false;
}
Et quand j'essai de mettre true à la place de false (ligne 498), ça marche, mais après ça ne fait plus rien
Quand tu fais ton if($this->request->is(...)), tu lui passe un array.
Faut que tu utilise un OR et faire 2 conditions :
if($this->request->is('post') || $this->request->is('put'))