I am new to cakephp. I followed this http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html tutorial, everything is working fine apart from the "edit method" when I click the edit link it gives following warning message and does not edit.
Warning (2): strtolower() expects parameter 1 to be string, array given [CORE/Cake/Network/CakeRequest.php, line 471]
Code Context
$type = array(
(int) 0 => 'post',
(int) 1 => 'put'
)
$this = object(CakeRequest) {
params => array(
'plugin' => null,
'controller' => 'posts',
'action' => 'edit',
'named' => array([maximum depth reached]),
'pass' => array(
[maximum depth reached]
)
)
data => array()
query => array()
url => 'posts/edit/2'
base => '/cake_2_0'
webroot => '/cake_2_0/'
here => '/cake_2_0/posts/edit/2'
}
strtolower - [internal], line ??
CakeRequest::is() - CORE/Cake/Network/CakeRequest.php, line 471
PostsController::edit() - APP/Controller/PostsController.php, line 48
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 485
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 186
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 161
[main] -
To clear this up a little further, it's the
$this->request->is(array('post', 'put'))
call causing the problem, as CakeRequest::is()
has only been able to take an array
as of CakePHP 2.4.0, earlier versions are expecting a string
.
I'm not sure whether one should expect the tutorials to be compatible to older versions, however, for the sake of completeness, in older versions you'd have to use multiple calls to CakeRequest::is()
:
$this->request->is('post') || $this->request->is('put')
See also
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With